2016-04-15 196 views
1

我遇到了一种情况,我必须手动从其中一台生产服务器调用SOAP web服务(部署在另一台服务器上)并检查是否一切正常。使用telnet命令调用SOAP webservice

因为这些都是在线服务器,所以没有像wgetcurlnc这样的网络工具可用。我试图检查解决方案是谷歌,但没有运气。

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

telnet在那里,但我不知道如何使它适用于我的情况。

是否有任何其他方式来调用远程服务没有这些工具?

回答

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

注:确保长度请求有效载荷在发送前是正确的。

+0

感谢您使用解决方案返回!你今天让互联网更聪明一点:) –