2015-12-31 66 views
0

我使用了suds來發送XML,並且我的請求正在工作,但是我非常困惑於如何使用XML來複制我的結果。我有我的肥皂水客戶端通過發送XML請求:python中的SOAP客戶端,如何使用XML進行復制

from suds.client import Client 
ulr = "xxxxxxx" 
client = Client(url) 

... 

client.last_received.str() 

,但我不知道在那裏我會發送請求,如果我用的是請求庫。我如何在一個python請求中複製來自suds客戶端的請求?

+0

爲什麼不直接使用SOAP客戶端? SOAP定義了一個客戶端/服務器RPC,並且可能相當複雜。 'suds'把它變成一個更簡單的python API。似乎你正在錯誤的方向擺弄底層的XML。 – tdelaney

回答

1

大多數SOAP API僅僅覆蓋普通的HTTP,使用POST - 因此可以輕鬆地使用任何標準HTTP客戶端(如Requests)進行模擬。

第一個look here查看如何查看泡沫發送的標題和正文 - 然後是複製這些標題/ XML正文並將它們傳遞到請求庫中。

所有HTTP SOAP API的99%中的一個定義特徵是,您的請求將針對每個請求轉到相同的端點(例如'http://yyy.com:8080/Posting/LoadPosting.svc),並且使用SOAPAction標頭在標頭中指定實際操作) 。將此與RESTful API進行對比,其中的動作與您要調用的動詞+結束點(POST /userGET /menu等)有關。

+0

雅,但它發送泡沫請求的網址究竟是什麼?如果我的客戶泡沫就像是這樣的: 從suds.client進口客戶 進口日期時間 #gets在一個文件中 URL =「http://xxxxxxxxx.com:8080//Posting/LoadPosting.svc所有服務說明?singleWsdl' – Rob

+0

client = Client(url),,result = client.service.PostLoads(request),,,,它仍然發送東西到原始url?我對SOAP非常不熟悉,但希望將客戶端從我的應用程序中移出 – Rob

+0

您很可能不希望實現您自己的WSDL解析器 - 這可能是編寫HTTP SOAP客戶端最困難的部分。我假設你只是想使用請求來模仿調用,但不是一個完整的drop-in替換,包括WSDL解析 –