Вопрос

Сегодня я наткнулся на странную статью, она звучит примерно так:

Я настраиваю наборы тестов для управления моим веб-сервисом, который написан на PHP5 с использованием класса Ошибка в мыле среди прочих.

Я использую этот класс для возврата сообщения об ошибке клиентам.Пример:

if (!$this->CheckHost(getenv('REMOTE_ADDR')))
{
    return new SoapFault(S_CLIENT, S_STRING_IP, "", S_DETAIL_IP);
}

Возвращает ошибку SoapFault, если клиент не авторизован...

Теперь, если я добавлю утверждение о соответствии схемы в SoapUI 3.0.1 это говорит мне, что возвращенное сообщение не соответствует его wsdl-файлу.

WSDL-файл написан мной и на самом деле не содержит описания фактического класса SoapFault.Было бы ли это необходимо?Думал, что нет, потому что SoapFault в любом случае специфицирован в Soap 1.1.

Фактический ответ выглядит примерно так:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
   <SOAP-ENV:Body>
      <SOAP-ENV:Fault>
         <faultcode>SOAP-ENV:Client</faultcode>
         <faultstring>ERR_102</faultstring>
         <faultactor/>
         <detail>IP error message</detail>
      </SOAP-ENV:Fault>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Сообщение об ошибке SoapUI выглядит следующим образом:

Элемент "detail", содержащий только элемент тип контента не может содержать текстовое содержимое.

У кого-нибудь есть намек на то, что я делаю не так?

тиа

K

Это было полезно?

Решение

XML - схема soap 1.1 (http://schemas.xmlsoap.org/soap/envelope/) определяет элемент detail как

   <xs:complexType name="detail"><xs:sequence> 
      <xs:any namespace="##any" minOccurs="0" maxOccurs="unbounded" processContents="lax" /> 
    </xs:sequence> 
    <xs:anyAttribute namespace="##any" processContents="lax" /> 
  </xs:complexType> 

это означает, что он не может содержать просто текст, как по вашей вине.Попробуйте изменить ответ на что-то вроде

...
   <detail><msg>IP error message</msg></detail>
...

Надеюсь, это поможет!

с уважением,

/Оле eviware.com

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top