2016-04-15 124 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

感謝您使用解決方案返回!你今天讓互聯網更聰明一點:) –