python调用webservice接口

时间: 2023-08-15 admin 互联网

python调用webservice接口

python调用webservice接口

1、选用suds包
安装

pip install suds

2、发送webservice的代码

url = 'xxx?WSDL'  #此处为你的webservice的地址
client = Client(url)
print(client)  #此方法可以打印出webservice提供哪些类型及方法
result=client.service.acceptMessage(option)         # acceptmessage  是你的方法,option为参数
print(result)

还可以通过创建工厂的方式进行

#用test.factory.create创建实例
 
request=test.factory.create('DT_IPM_SEND_PSBUDGET_REQ')
 
IPM_MSG_HEAD = test.factory.create('MSG_HEAD')
 
request.IS_MSG_HEAD = IPM_MSG_HEAD
 
IPM_MSG_HEAD.SENDTIME = '20170421102908'
IPM_MSG_HEAD.RECIVER = 'ECC'
IPM_MSG_HEAD.SENDER = 'IPM'
IPM_MSG_HEAD.INTERFACE_ID = 'PROJECT_CREATE'
IPM_MSG_HEAD.SPRAS = None
IPM_MSG_HEAD.OPERATOR = None
IPM_MSG_HEAD.SYSTEM_ID = None
IPM_MSG_HEAD.PROXY_ID = None
IPM_MSG_HEAD.GUID = None
IPM_MSG_HEAD.MANDT = None
request.IV_BUKRS = "X060"
request.IV_TESTRUN = "X"
 
request.IT_PSBUDGET=[]
 
#用test.service.XXXXX去调用方法
m=test.service.SI_IPM_SEND_PSBUDGET_REQ_A_OUT(request)
print IPM_MSG_HEAD
print request

3、set_options

client = Client(url)
print(client.option)   #通过这个可以查看可以设置哪些options

client.set_options(timeout=100) #设置请求超时时间

client.set_options(headers={'User-agent': 'xxxxx'}) #设置发送请求的代理 

4、Win Error 10054
socket发送次数多得时候程序会时不时的报 WinError 100054
解决方法
1、发送一次请求后,加上几秒的等待
2、给于每次的请求设置超时时间
3、发送请求的时候捕获异常,进行请求的重试
4、修改请求headers中的代理设置