Как я могу использовать API W3C Markup Validator в моем приложении .NET? - PullRequest
1 голос
/ 05 марта 2009

Я обнаружил, что есть API для W3C Markup Validator .

Я ранее спрашивал: Существует ли библиотека .NET для API W3C Markup Validator?

Ассаф ответ :

Этот API основан на SOAP. Если хотите использовать его в приложении .net вы можете просто добавьте веб-ссылку и код против этого. Кажется достаточно простым, как это в основном API с одним методом ...

Итак, я попытался добавить ссылку на сервис по адресу http://validator.w3.org/check.

Сначала появится диалоговое окно:

Пожалуйста, подождите, пока сервисная информация быть загруженным ...

Тогда:

Произошла ошибка ... при попытке найти услуги в «http://validator.w3.org/check'

Диалоговое окно добавления справки по Visual Studio http://img17.imageshack.us/img17/719/addservicereference.gif

Сведения об ошибке:

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

Если услуга определена в текущее решение, попробуйте построить решение и добавление услуги ссылка снова.

Как я могу использовать W3C Markup Validator API в моем приложении .NET?

Ответы [ 4 ]

3 голосов
/ 25 марта 2011

Сервис W3C не является стандартным сервисом SOAP! Он может давать отформатированный ответ SOAP, но называть его сервисом, основанным на отдельном REST URL. http://validator.w3.org/check?uri=YourURLToProof&charset=utf-8&output=soap12

2 голосов
/ 02 августа 2009

Чтобы веб-ссылка работала, я думаю, что владельцу службы необходимо опубликовать файл WSDL для .Net, чтобы читать и создавать локальные объекты. Затем вы вызываете эти локальные объекты в своем проекте, и они заполняются данными из другого конца службы с использованием SOAP.

Я искал файл WSDL, в котором описывается SOAP проверки W3C на их сайте, но пока не повезло. Что странно, учитывая, что W3C управляет протоколом WSDL. Вы действительно ожидаете, что они будут использовать его!

Если кто-нибудь знает:

  1. Способ заставить веб-справочник работать без WSDL или ...
  2. Где файл WSDL валидатора W3C ...

Тогда, пожалуйста, дайте мне знать ...

В противном случае - W3C разместил на своем сайте ссылку на библиотеку C # (http://validator.w3.org/docs/api.html#libs),, которую достаточно легко загрузить и построить. Но она использует LINQ для создания объекта на основе SOAP, возвращаемого W3C - который кажется немного тяжелым для моих целей ... Это полезная отправная точка, если ничего больше.

1 голос
/ 03 августа 2009

Веб-служба SOAP должна иметь WSDL. Я видел некоторые упоминания на сайте W3C API-интерфейса SOAP, но местоположение API или WSDL для него не очевидно.

Бродя и ища с Бингом, я нашел следующее: http://www.w3.org/Search/Mail/Public/search?type-index=www-validator&index-type=t&keywords=wsdl&search=Search

Удачи. Похоже, они сделали это немного в обратном направлении, когда веб-сервис был запоздалой мыслью людей, которые не совсем понимают концепцию WSDL.

0 голосов
/ 02 августа 2017

Вы можете скачать и установить валидатор на свой сайт с https://github.com/validator/validator

Некоторые полезные заметки со страницы о

Я сделал быстрый метод проверки c # из вызова: https://validator.w3.org/nu/?doc=http://www.example.com&out=json

вроде так:

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.

...