SoapUI MockServices возвращает html, а не xml ответ - PullRequest
8 голосов
/ 11 января 2012

Используя следующий образец WSDL-файла, я сгенерировал новый проект в SOAP UI (версия 3.5) и создал пример набора тестов, тестового примера и службы имитации.

WSDL

<definitions name="HelloService"
   targetNamespace="http://www.examples.com/wsdl/HelloService.wsdl"
   xmlns="http://schemas.xmlsoap.org/wsdl/"
   xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
   xmlns:tns="http://www.examples.com/wsdl/HelloService.wsdl"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema">

   <message name="SayHelloRequest">
      <part name="firstName" type="xsd:string"/>
   </message>
   <message name="SayHelloResponse">
      <part name="greeting" type="xsd:string"/>
   </message>

   <portType name="Hello_PortType">
      <operation name="sayHello">
         <input message="tns:SayHelloRequest"/>
         <output message="tns:SayHelloResponse"/>
      </operation>
   </portType>

   <binding name="Hello_Binding" type="tns:Hello_PortType">
   <soap:binding style="rpc"
      transport="http://schemas.xmlsoap.org/soap/http"/>
   <operation name="sayHello">
      <soap:operation soapAction="sayHello"/>
      <input>
         <soap:body
            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
            namespace="urn:examples:helloservice"
            use="encoded"/>
      </input>
      <output>
         <soap:body
            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
            namespace="urn:examples:helloservice"
            use="encoded"/>
      </output>
   </operation>
   </binding>

   <service name="Hello_Service">
      <documentation>WSDL File for HelloService</documentation>
      <port binding="tns:Hello_Binding" name="Hello_Port">
         <soap:address
            location="http://www.examples.com/SayHello/"/>
      </port>
   </service>
</definitions>

Я могу запустить макет службы и получить доступ через браузер, в результате чего я вижу ссылку на wsdl и могу просмотреть ее.

Однако, используя сгенерированный по умолчаниюзапрос мыла (как показано ниже) возвращает ответ html (кажется, что это веб-страница), а не ответ мыла, который я настроил.

REQUEST

POST http://localhost:8088/SayHello/ HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: text/xml;charset=UTF-8
SOAPAction: "sayHello"
User-Agent: Jakarta Commons-HttpClient/3.1
Host: localhost:8088
Content-Length: 467

<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:examples:helloservice">
   <soapenv:Header/>
   <soapenv:Body>
      <urn:sayHello soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
         <firstName xsi:type="xsd:string">James</firstName>
      </urn:sayHello>
   </soapenv:Body>
</soapenv:Envelope>

ОТВЕТ

HTTP/1.1 200 OK
Content-Type: text/html; charset=iso-8859-1
Transfer-Encoding: chunked
Server: Jetty(6.1.x)

<html><body><p>There are currently 1 running soapUI MockServices</p><ul><li><a href="/mockHello_Binding?WSDL">Hello_Binding MockService</a></li></ul></p></body></html>

Я настроил пример ответа следующим образом:

ОБРАЗЕЦ ОТВЕТА НА MOCK

<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:examples:helloservice">
   <soapenv:Header/>
   <soapenv:Body>
      <urn:sayHelloResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
         <greeting xsi:type="xsd:string">?</greeting>
      </urn:sayHelloResponse>
   </soapenv:Body>
</soapenv:Envelope>

Он настроен как ответ по умолчанию, поэтому я понятия не имею, почему он не возвращается.

Есть предложения?+1 ко всему, что помогает мне прогрессировать.

Спасибо

Ответы [ 4 ]

11 голосов
/ 29 апреля 2012

Служба для URL конечной точки не запущена из вашего запроса: http://localhost:8088/SayHello/.Единственный запущенный сервис расположен по URL http://localhost:8088/mockHello_Binding, как указано в ответе сервиса.SoapUI возвращает список всех запущенных фиктивных сервисов на HTML-странице, когда запрашивается несуществующий.Для устранения этой проблемы рассмотрите возможность исправления адреса конечной точки.

4 голосов
/ 17 января 2018

Я столкнулся с той же проблемой, используя soap ui 5.4.0.Это произошло потому, что путь созданного сервиса был неверным.

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

Чтобы изменитьэто, дважды щелкните по созданной фиктивной службе, нажмите кнопку «Остановить службу», а не кнопку «Настройки» (расположенную рядом с кнопками «Стоп» и «Пуск»). Измените путь к / и дважды проверьте хост.Должно сработать сейчас.

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

0 голосов
/ 08 февраля 2018

Указанный вами URL неверен. URL MockService создается при импорте WSDL в SOAP с портом по умолчанию 8088. Решение: 1) Создать новый проект 2) Импортировать WSDL 3) Установите флажок Создать Mockervice 4) Затем вы увидите URL, где будет запускаться mockservice :: -> mockSearchURL (например, 5) хит HTTP://{IP}:8088/mockSearchURL

СДЕЛАНО !!

0 голосов
/ 29 августа 2014

У меня похожая проблема с портом отправки BizTalk 2010 и веб-службой Mock SOAPUI. Я узнал, что URL-адрес 2 отличается Когда я открываю это в IE .. Я вижу ответ HTML. http://localhost:8088/MockUpdateBasicHttp

Когда вы открыли это в IE, я получил пустой белый экран, который обычно означает успех. http://localhost:8088//MockUpdateBasicHttp

Правильный URL-адрес с одним символом '/' после номера порта. http://localhost:8088/MockUpdateBasicHttp

...