我发现有API for the W3C Markup Validator。
我之前曾问过:Is there a .NET library for the W3C Markup Validator API?
此API基于SOAP。如果你想 你可以在.net应用程序中使用它 只需添加Web引用和代码 反对。看起来很简单 它基本上是单方法API ...
所以,我尝试在地址http://validator.w3.org/check
添加“服务参考”。
首先显示对话框:
请等待服务信息 下载...
然后:
尝试时发生错误.... 寻找服务 'http://validator.w3.org/check'
错误详情:
HTML文档不包含Web 服务发现信息。 元数据包含一个引用 无法解决: 'http://validator.w3.org/check'。该 内容类型text / html;字符集= utf-8的 响应消息的不匹配 绑定的内容类型 (application / soap + xml; charset = utf-8)。 如果使用自定义编码器,请确保 IsContentTypeSupported方法 是正确实施的。首先 1024字节的响应是:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>
Validation Results - W3C Markup Validator</title>
<link rel="icon" href="data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%10%00%00%00%10%08%02%00%00%00%90%91h6%00%00%00%19IDAT(%91c%BCd%AB%C2%40%0A%60%22I%F5%A8%86Q%0DCJ%03%00%DE%B5%01S%07%88%8FG%00%00%00%00IEND%AEB%60%82" type="image/png" />
<link rev="made" href="mailto:www-validator@w3.org" />
<link rev="start" href="./" title="Home Page" />
<style type="text/css" media="all">@import "./style/base.css";
@import "./style/results.css";</style>
<meta name="keywords" content="HTML, HyperText Markup Language, Validation,
W3C Markup Validation Service" />
<meta name="description" content="W3C's easy-to-use
H
如果服务是在。中定义的 目前的解决方案,尝试建立 解决方案并添加服务 再次参考。
如何在.NET应用程序中使用W3C Markup Validator API?
答案 0 :(得分:3)
W3C服务不是标准的SOAP服务!它可以提供SOAP格式的响应,但要将其称为基于REST的基于URL的服务 http://validator.w3.org/check?uri=YourURLToProof&charset=utf-8&output=soap12
答案 1 :(得分:2)
为了使Web引用工作,我认为它需要服务的所有者为.Net发布一个WSDL文件来读取和创建本地对象。然后,在项目中调用这些本地对象,然后使用SOAP从服务的另一端填充Data。
我一直在寻找一个WSDL文件,它在某个地方描述了W3C在其网站上的验证SOAP,但到目前为止还没有运气。鉴于W3C管理WSDL协议,这很奇怪。你真的希望他们使用它!
如果有人知道:
然后请让我知道......
如果失败了 - W3C已经在他们的网站(http://validator.w3.org/docs/api.html#libs)上放置了一个C#库的链接,这很容易下载和构建。但是,它使用LINQ来构建一个基于W3C返回的SOAP的对象 - 这对我来说似乎有点沉重......如果不是其他的话,这是一个有用的起点。
答案 2 :(得分:1)
SOAP Web服务必须具有WSDL。我在W3C网站上看到过SOAP API的一些提及,但API或WSDL的位置并不明显。
在Bing上搜索并搜索,我找到了以下内容:http://www.w3.org/Search/Mail/Public/search?type-index=www-validator&index-type=t&keywords=wsdl&search=Search
祝你好运。看起来他们已经做了一点倒退,Web服务是那些不太了解WSDL概念的人的事后想法。答案 3 :(得分:0)
您可以从https://github.com/validator/validator
实际下载验证程序并将其安装到您自己的网站上 中的一些有用说明我通过调用https://validator.w3.org/nu/?doc=http://www.example.com&out=json
制作了一个快速的c#验证器方法 像这样:using Newtonsoft.Json;
using System.Net;
using System.Net.Http;
private void ValidateFromW3Org(string url)
{
HttpClientHandler clientHandler = new HttpClientHandler();
HttpClient client = new HttpClient(clientHandler);
client.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent",
"Mozilla/5.0 (Windows NT 6.2; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0");
string validator = string.Format(
"http://validator.w3.org/nu/?doc={0}&out=json", url);
string response = client.GetStringAsync(url).Result;
PageValidationResult pageResults = JsonConvert.DeserializeObject<
PageValidationResult>(response);
IList<ValidationResult> results = pageResults.Messages;
foreach(ValidationResult result in results)
{
Console.WriteLine("{0}:{1} line: {2} - {3}", result.Type,
result.SubType, result.LastLine, result.Message);
}
}
public class ValidationResult
{
public string Type { get; set; }
public string SubType { get; set; }
public int LastLine { get; set; }
public int FirstColumn { get; set; }
public int LastColumn { get; set; }
public string Message { get; set; }
public string Extract { get; set; }
public int HiliteStart { get; set; }
public int HiliteLength { get; set; }
}
public class PageValidationResult
{
public string Url { get; set; }
public IList<ValidationResult> Messages { get; set; }
}
请注意,这只是一个样本。您不希望在某种方法中重用HttpClient。这也使用第三方Newtonsoft.Json来解析json结果。