1. 程式人生 > 程式設計 >python suds訪問webservice服務實現

python suds訪問webservice服務實現

安裝suds

在Python3環境下如果使用:pip install suds,應該會報ImportError: No module named client,這裡推薦安裝suds-py3。

使用

1.獲取所有方法

webservice中的方法,跟http中的get、post這種類似。

from suds.client import Client

url = 'http://******************?wsdl' # wsdl地址
client = Client(url)
print(client) # 檢視定義的所有方法與請求所需攜帶的引數

返回的Methods中即定義的方法,包括請求所需攜帶的引數與引數型別。

python suds訪問webservice服務實現

2.呼叫方法

首先呼叫一個不帶引數的方法。

from suds.client import Client

url = 'http://************************?wsdl' # wsdl地址
client = Client(url)
response = client.service.getRealtimeDataList() # 返回列表,列表每一項是一個realtimeVo物件
for i in response:
 # 使用Client的dict方法,將realtimeVo物件轉換為dict
 print(Client.dict(i))

當呼叫需要傳入引數的方法時,在對應方法內直接按順序傳入就可以。

這裡注意引數的型別,比如XML的dateTime型別,不能直接傳入python的datetime型別,會報錯的。這裡需要用suds的DateTime轉換一下。具體程式碼如下。

from suds.client import Client
from suds.sax.date import DateTime
from datetime import datetime,timedelta

url = 'http://***************************?wsdl' # wsdl地址
client = Client(url)

now = datetime.now() - timedelta(days=1)
yesterday = now.strftime("%Y-%m-%d 00:00:00") # 返回字串形式的日期
date_time = DateTime(yesterday) # DateTime既可以直接傳入字串也可以直接傳入datetime物件,我這裡傳入的字串

response = client.service.getHistoryDataList(date_time,date_time,"address","corpCode") # 返回列表,列表每一項是一個realtimeVo物件
for i in response:
 # 使用Client的dict方法,將realtimeVo物件轉換為dict
 print(Client.dict(i))

3.其他

其他方法,比如:

client.set_options() # 設定頭資訊

目前本人沒用到過。

到此這篇關於python suds訪問webservice服務實現的文章就介紹到這了,更多相關python suds訪問webservice服務內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!