前言
webservice 的接口,前面已經掌握了在 postman 上做接口測試,接下來使用 python 代碼測試 webservice 接口
環境准備
先使用 pip 安裝suds 庫: pip install suds-jurko
>pip install suds-jurko
Collecting suds-jurko
Downloading suds-jurko-0.6.zip (255 kB)
|████████████████████████████████| 255 kB 6.2 kB/s
Using legacy 'setup.py install' for suds-jurko, since package 'wheel' is not installed.
Installing collected packages: suds-jurko
Running setup.py install for suds-jurko ... done
Successfully installed suds-jurko-0.6
Client建立連接
創建websercive對象,返回全部方法,url是訪問的webservice地址后面帶上?wsdl
from suds import client
# webservice地址
url = "http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl"
# 創建webservice對象
cli = client.Client(url)
print(cli) # 查看全部方法
結果返回
Suds ( https://fedorahosted.org/suds/ ) version: 0.6
Service ( MobileCodeWS ) tns="http://WebXml.com.cn/"
Prefixes (1)
ns0 = "http://WebXml.com.cn/"
Ports (2):
(MobileCodeWSSoap)
Methods (2):
getDatabaseInfo()
getMobileCodeInfo(xs:string mobileCode, xs:string userID)
Types (1):
ArrayOfString
(MobileCodeWSSoap12)
Methods (2):
getDatabaseInfo()
getMobileCodeInfo(xs:string mobileCode, xs:string userID)
Types (1):
ArrayOfString
返回了2個方法getDatabaseInfo() 和 getMobileCodeInfo(xs:string mobileCode, xs:string userID)
通過瀏覽器訪問也可以看到對應的方法和請求參數http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx
調用service接口
先測試第一個接口: getDatabaseInfo
獲得國內手機號碼歸屬地數據庫信息
輸入參數:無;返回數據:一維字符串數組(省份 城市 記錄數量)。
調用service接口的格式:cli.service.方法名稱(參數)
from suds import client
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/
# webservice地址
url = "http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl"
# 創建webservice對象
cli = client.Client(url)
# print(cli) # 查看全部方法
tels = cli.service.getDatabaseInfo()
print(tels)
於是可以返回結果
(ArrayOfString){
string[] =
"全部 數據 265903",
"安徽 安慶 658",
"安徽 蚌埠 456",
"安徽 亳州 489",
"安徽 巢湖 323",
"安徽 池州 281",
"安徽 滁州 555",
"安徽 阜陽 885",
"安徽 合肥 1253",
"安徽 淮北 310",
"安徽 淮南 380",
"安徽 黃山 256",
......
}
getMobileCodeInfo
獲得國內手機號碼歸屬地省份、地區和手機卡類型信息
輸入參數:mobileCode = 字符串(手機號碼,最少前7位數字),userID = 字符串(商業用戶ID) 免費用戶為空字符串;
返回數據:字符串(手機號碼:省份 城市 手機卡類型)。
測試
若要使用 HTTP POST 協議對操作進行測試,請單擊“調用”按鈕。
以下是 SOAP 1.2 請求和響應示例。所顯示的占位符需替換為實際值。
POST /WebServices/MobileCodeWS.asmx HTTP/1.1
Host: ws.webxml.com.cn
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://WebXml.com.cn/getMobileCodeInfo"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<getMobileCodeInfo xmlns="http://WebXml.com.cn/">
<mobileCode>string</mobileCode>
<userID>string</userID>
</getMobileCodeInfo>
</soap:Body>
</soap:Envelope>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<getMobileCodeInfoResponse xmlns="http://WebXml.com.cn/">
<getMobileCodeInfoResult>string</getMobileCodeInfoResult>
</getMobileCodeInfoResponse>
</soap:Body>
</soap:Envelope>
很明顯這里有2個參數需要傳,按上面文檔的提示傳對應的參數名稱和值就行了
from suds import client
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/
# webservice地址
url = "http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl"
# 創建webservice對象
cli = client.Client(url)
print(cli) # 查看全部方法
# 輸入參數:mobileCode = 字符串(手機號碼,最少前7位數字),
# userID = 字符串(商業用戶ID) 免費用戶為空字符串
result = cli.service.getMobileCodeInfo(mobileCode="152215501xx",
userID="")
print(result)
結果返回:
152215501xx:上海 上海 上海移動全球通卡
使用 python 的 suds 庫測試 webservice 其實更簡單了,不用看那些繁瑣的xml格式的數據了,根據接口文檔傳對應的參數即可。