May*_*y12 1 soap wsdl web-services
我在Jetty上部署了一个Web服务.我使用SOAP UI通过链接调用它http://ip:port/DefaultRequestListener?workflow=WsdlCPF&soapAction=Import,它的工作原理.我一直在使用在网址末尾有?wsdl的服务,但现在我很困惑.为什么在url的末尾没有?wsdl?
Web Service端点通常有一个如下所示的URL:
http://server:port/services/myservice
Run Code Online (Sandbox Code Playgroud)
它没有wsdl参数.这是Web服务本身的URL,即客户端调用的URL.
大多数Web服务框架都有一个方便的功能,它使用wsdlurl参数将端点的url 映射到显示该Web服务的WSDL内容的网页.所以这个网址:
http://server:port/services/myservice?wsdl
Run Code Online (Sandbox Code Playgroud)
就像告诉服务器:"显示此Web服务端点的wsdl文件".您在该网页中看到的内容不是存储在磁盘中的wsdl文件,它只是框架生成的wsdl的内容.
此功能非常有用,因为如果我们要为该Web服务创建客户端,我们不需要去询问wsdl文件,我们可以从该URL获取它.
所有这些意味着在SoapUI中你会创建一个新项目并告诉他可以在这里找到wsdl文件:http://server:port/services/myservice?wsdl.如果你告诉他wsdl文件是:http://server:port/services/myservice它将抛出一个错误,因为它不是一个wsdl文件.
或者,您可以输入您在磁盘而不是URL中的wsdl文件的位置,它应该创建相同的ws客户端.
然后SoapUI将读取wsdl,他将看到Web服务的端点是http://server:port/services/myservice这样,这是他将发送请求的地方.
在您的情况下,由于您已经将url参数传递给端点,因此您可以考虑在此URL处调用您的Web服务:
http://ip:port/DefaultRequestListener?workflow=WsdlCPF&soapAction=Import
Run Code Online (Sandbox Code Playgroud)
如果您想查看该Web服务的wsdl,只需wsdl在URL中添加一个参数即可.请注意,就像任何其他url查询一样,符号?只表示url在那里结束,下一个字符是url参数,它们之间用分隔符&.在您的情况下,您有3个参数(workflow,soapAction和now wsdl):
http://ip:port/DefaultRequestListener?workflow=WsdlCPF&soapAction=Import&wsdl
Run Code Online (Sandbox Code Playgroud)
现在它返回一个像公司类型的文本:blah blah ... Region:blah blah ...
这是wsdl内容,当然包括Web服务中使用的xml类型,都是正常的.
也许它看起来很奇怪,因为在磁盘中的wsdl文件中它没有显示所有这些类型,而是导入xsd包含这些定义的文件.您在浏览器中看到的wsdl永远不会有这样的导入,并且将始终显示嵌入在wsdl文件中的所有类型.
向下滚动所有这些类型定义,您将看到wsdl的其余部分.
我希望它有助于明确?wsdl最终的网址不是网络服务,它只是wsdl内容.
| 归档时间: |
|
| 查看次数: |
13216 次 |
| 最近记录: |