Проверка сообщений SOAP - PullRequest
       19

Проверка сообщений SOAP

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

Я не могу получить сообщения SOAP для проверки в качестве допустимого XML. Например, я вынул приведенное ниже сообщение SOAP из Википедии, и он не прошел проверку Validome . Является ли валидатор неправильным или в файле SOAP есть ошибка? Если валидатор не прав, можете ли вы предложить другой? Следует учитывать схемы. Например, W3C говорит, что этот xml правильно сформирован, но на самом деле он ужасно неверен, как правильно указывает Валидом.

<soapenv:Envelope
    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">
  <soapenv:Header>
    <wsa:ReplyTo>
      <wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>
    </wsa:ReplyTo>
    <wsa:From>
      <wsa:Address>http://localhost:8080/axis2/services/MyService</wsa:Address>
    </wsa:From>
    <wsa:MessageID>ECE5B3F187F29D28BC11433905662036</wsa:MessageID>
  </soapenv:Header>
  <soapenv:Body>
    <req:echo xmlns:req="http://localhost:8080/axis2/services/MyService/">
      <req:category>classifieds</req:category>
    </req:echo>
  </soapenv:Body>
</soapenv:Envelope>

Ответы [ 4 ]

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

Подтверждение следующего SOAP-сообщения:

<soapenv:Envelope
    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://schemas.xmlsoap.org/soap/envelope/ http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">
  <soapenv:Header>
    <wsa:ReplyTo>
      <wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>
    </wsa:ReplyTo>
    <wsa:From>
      <wsa:Address>http://localhost:8080/axis2/services/MyService</wsa:Address>
    </wsa:From>
    <wsa:MessageID>ECE5B3F187F29D28BC11433905662036</wsa:MessageID>
  </soapenv:Header>
  <soapenv:Body>
    <req:echo xmlns:req="http://localhost:8080/axis2/services/MyService/">
      <req:category>classifieds</req:category>
    </req:echo>
  </soapenv:Body>
</soapenv:Envelope>
3 голосов
/ 03 августа 2009

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

«Действительный» в терминах XML означает «действительный в соответствии с набором XML-схем». В отсутствие каких-либо схем концепция действительности не имеет смысла.

0 голосов
/ 20 сентября 2009

Чтобы сообщение SOAP выглядело точно так, как должно, вы должны проверить его по всем схемам, на которые есть ссылки в этом сообщении. В вашем примере это SOAP, WS-Addressing и схема для настраиваемого пространства имен (myService).

Схемы для SOAP и WS-Addressing доступны по URL, который также используется для пространства имен, но это просто соглашение, а не требование.

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

Я просмотрел вывод из валидатора, и он работает нормально, используемое вами сообщение SOAP является ошибкой. Конечно, ошибки, о которых он сообщает, есть. Также есть больше ошибок, о которых валидатор не сообщает, я подозреваю, что однажды обнаружит одну проблему с SOAP-сообщением, которое раскручивается к следующему родительскому элементу и продолжается.

Например, следующий элемент после <mod_eeduns/> должен быть <total_obligatedAmount/>, который (я предполагаю) был заменен на <total_obligatedAmount_within_this_search/>

Если вам нужно работать с этим SOAP, я предлагаю вам создать свой собственный XSD, существуют различные инструменты для их генерации из существующего сообщения Xml. Также было бы полезно связаться с сайтом и сообщить о найденных проблемах (используя тонкость). Если вам не нужно пользоваться этой услугой, тем лучше.

Когда вы говорите, что W3C говорит, что он хорошо сформирован, я не уверен, что вы имеете в виду. Например, включение пробела в имя элемента ..<eeParentDuns ></eeParentDuns>.. и тот факт, что они не совпадают, недопустимо в любой форме Xml, не говоря уже о SOAP + XSD.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...