使用以下示例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的链接,可以查看它。
但是,通过使用默认生成的soap请求(如下所示),它会返回一个html响应(似乎是网页),而不是我已配置的soap响应。
请求
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>
我已按如下方式配置了样本回复:
模拟样本响应
<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 :(得分:11)
您的请求中的端点网址未启动任何服务:http://localhost:8088/SayHello/
。唯一启动的服务位于服务响应中报告的URL http://localhost:8088/mockHello_Binding
。当请求不存在的一个时,SoapUI返回HTML页面中所有已启动的模拟服务的列表。考虑修复端点地址以解决此问题。
答案 1 :(得分:4)
我使用soap ui 5.4.0遇到了同样的问题。它发生了因为创建的模拟服务的路径不正确。
如果你点击soap UI,在底部创建的模拟服务 - 属性按钮上 - 你会看到你的路径看起来像/ mockBindingservice,应该说/.
要更改它,请双击创建的模拟服务,单击停止服务而不是设置按钮(位于停止和开始按钮旁边)。更改路径到/并仔细检查主机。
保存,开始服务。现在应该工作。
我知道这是一个老帖子,但希望它会帮助sombody寻找anwser。
答案 2 :(得分:0)
您正在点击的网址不正确。使用默认端口8088将WSDL导入SOAP时会创建MockService URL。
解:
1)创建新项目
2)导入WSDL
3)选中Create Mockervice
4)然后你会看到mockservice将运行的URL :: - &gt; mockSearchURL(例如)
5)点击HTTP://{IP}:8088/mockSearchURL
DONE !!
答案 3 :(得分:0)
我认为Url中的名称和请求中的名称
网址:SayHello 要求:sayHello S和s
名称应匹配
答案 4 :(得分:-1)
我在BizTalk 2010 Send Port和Mock SOAPUI webservice上遇到了类似的问题。
我发现2 URL不同
当我在IE中打开它时,我看到HTML响应。
http://localhost:8088/MockUpdateBasicHttp
当你在IE中打开它时,我得到一个空白的白色屏幕,通常意味着成功。
http://localhost:8088//MockUpdateBasicHttp
正确的网址是一个&#39; /&#39;在端口号后面。
http://localhost:8088/MockUpdateBasicHttp