python SOAP接口对接过程记录

前段时间学习了Python操作http接口,觉得挺容易的。最近项目组也有接触webservice接口,心里想想是否Python也可以操作这类接口。于是利用伟大的度娘,花了6个小时研究出来了,所以迫不及待更新一篇博文来分享。有兴趣讨论的同学可以加入我们的交流Q群:297669715。

 

一、准备环境

  webservice接口测试,需要用到suds库,网上百度的各种suds库都没法安装,我这里的Python3.5版本,所以安装不了那些suds库也没有办法在线安装,所以这里就提供一个大家都可用的方法和suds库。

 

1)下载suds库,地址:http://pypi.python.org/packages/source/s/suds-jurko/suds-jurko-0.4.1.jurko.4.zip#md5=769689edca81c34c0421a4145b08c264,文件名为:suds-jurko-0.4.1.jurko.4.zip

2)解压压缩包,放到Python安装路径下的scripts文件夹下面。

3)然后在cmd命令行中,进入到suds-jurko-0.4.1.jurko.4文件下面,输入命令: python setup.py install

4)安装成功

5)注意:如果在py中写代码 import suds报错,就要把suds-jurko-0.4.1.jurko.4文件夹下面的dist、suds以及suds_jurko.egg-info这三个文件夹,拷贝到Lib 下面的site-packages路径下面,就可以正常访问了。

6)一切准备就绪,可以开始测试啦!

1)引入suds库,代码如下:

 

1
from  suds.client  import  Client

 

 

2)创建一个webservice对象,来调用webservice里面的各类接口

1
2
user_url = "http://120.24.235.105:8080/finance-user_info-war-1.0/ws/financeUserInfoFacade.ws?wsdl"  #这里是你的webservice访问地址
client = Client(user_url) #Client里面直接放访问的URL,可以生成一个webservice对象

 

3)打印出这个wsdl地址里面的所有接口信息:

1
print (client) #打印所webservice里面的所有接口方法名称,结果如下截图所示:


4.查看接口下面的type里面是否需要传送协议头,如果需要的话Client就需要设置头部信息,设置方法如下:

header = client.factory.create('协议头名称')#定位协议头
header.AccountInfo.PartnerID = "协议头内容" #设置协议头的值
client.set_options(soapheaders=[header,])#传送协议头

完整demo:

from suds.client import Client

user_url="https://www.XXXX.cn/service/searchapi.asmx?WSDL" #这里是你的webservice访问地址
# user_url = 'http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?WSDL'
client=Client(user_url)#Client里面直接放访问的URL,可以生成一个webservice对象

header = client.factory.create('定位协议头')
header.AccountInfo.PartnerID = "协议头内容"
client.set_options(soapheaders=[header,])
result=client.service.SearchByKeyword('keyword')
print(result)

你可能感兴趣的:(python)