使用telnet命令调用SOAP Web服务

时间:2016-04-15 10:19:09

标签: web-services unix telnet soap-client

我遇到过一种情况,我必须手动从一个生产服务器调用SOAP Web服务(部署在另一个服务器中),并检查一切是否正常。

由于这些都是实时服务器,因此没有wgetcurlnc等网络工具可用。我试过检查解决方案是谷歌但没有运气。

作为一种解决方法,我可以编写一个java客户端套接字并调用该服务,但即使这样也不允许。

telnet有,但我不确定如何让它适合我的情况。

有没有其他方法可以在没有这些工具的情况下调用远程服务?

1 个答案:

答案 0 :(得分:4)

最后几个小时后,我能够使用telnet调用SOAP服务,如下所示

首先打开与远程服务器的TCP连接,如下所示。

$> telnet hostname portname

连接后,将请求框架化为以下方法之一并粘贴到屏幕上并按enter key两次。

我们可以通过两种方式呼叫服务。

方法1:,而不是在POST标头中提及端点路径,我们可以在SOAPAction标头中提供。

POST / HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: text/xml;charset=UTF-8
SOAPAction: "<endpoint URL from WSDL>"
Content-Length: <number of bytes you are sending in body section>
Host: <hostname>:<port>
Proxy-Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)

<SOAP Request payload>

方法2:在请求标头本身中提到端点路径,因此我们可以在“”SOAPAction标头中给出空值(这意味着请求路径本身就是端点路径)。

POST /soap/server HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: text/xml;charset=UTF-8
SOAPAction: ""
Content-Length: <payload size>
Host: hostname:port
Proxy-Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)

<SOAP Request payload>

回复:调用成功后,响应将打印如下

HTTP/1.1 200 OK
Content-Type: text/xml;charset=UTF-8
Content-Length: <response payload size>

<SOAP response payload>

有关SOAPHeader check this link

的更多信息

注意:在发送之前,请确保请求有效负载的长度是正确的。