2012-01-11 312 views
7

使用下面的示例WSDL文件,我在SOAP UI(版本3.5)中生成了一個新項目,並創建了示例測試套件,測試用例和模擬服務。SoapUI MockServices返回html而不是xml響應

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並可以查看它的模擬服務和訪問。

但是,通過使用默認生成的soap請求(如下所示),它會返回一個html響應(看起來是網頁)而不是我配置的soap響應。

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> 

RESPONSE

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> 

我如下構成的示例響應:

樣本響應ON 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對任何有助於我進步的東西。

感謝

+0

同樣的問題在這裏問:http://www.soapui.org/forum/viewtopic.php?t=4177 – Jimmy 2012-01-11 19:49:55

+0

出於好奇 - 你能夠創建一個簡單的Java客戶端,調用該Web服務並獲得響應從中? – 2012-01-11 20:13:57

回答

10

沒有任何服務正在開始從您的請求的端點URL:http://localhost:8088/SayHello/。唯一啓動的服務位於服務響應中報告的URL http://localhost:8088/mockHello_Binding。當請求一個不存在的模擬服務時,SoapUI返回HTML頁面中所有已啓動的模擬服務的列表。考慮修復端點地址以解決此問題。

-1

我有與BizTalk 2010發送端口和模擬SOAPUI webservice類似的問題。 我發現這2個URL不同 當我在IE中打開這個..我看到了HTML響應。 http://localhost:8088/MockUpdateBasicHttp

當你在IE中打開它時,我得到了一個空白的白色屏幕,通常意味着成功。 http://localhost:8088//MockUpdateBasicHttp

正確的URL在端口號後帶有一個'/'。 http://localhost:8088/MockUpdateBasicHttp

1

我使用soap ui 5.4.0時遇到了同樣的問題。它已經發生,因爲創建的模擬服務的路徑不正確。

如果你點擊soap UI,在底部創建的模擬服務 - 屬性按鈕 - 你會看到你的路徑看起來像/ mockBindingservice,它應該說/。

要更改它,請雙擊創建的模擬服務,單擊停止服務而不是設置按鈕(位於停止和開始按鈕旁邊)。更改路徑到/並重複檢查主機。

保存,啓動服務。現在應該工作。

我知道這是一箇舊帖子,但希望它會幫助sombody尋找anwser。

+0

請完成參觀。很好,你發佈了你的肥皂版本號和你的答案。這樣它保持了一點...最新;-) – ZF007 2018-01-17 10:25:14

0

您打的網址不正確。而導入的WSDL到SOAP默認端口MockService URL創建8088 解決方法: 1)新建項目 2)進口WSDL 3)檢查創建Mockervice 4)然後你會看到的網址,讓mockservice將運行:: - > mockSearchURL(例如) 5)hit HTTP://{IP}:8088/mockSearchURL

DONE !!