在前几篇文章里面我重点用python去发布一个webservice。我用的是soaplib库。发布以后确实可以通过php来访问,也可以通过python访问,通过php访问的话还好。但是通过python访问的时候必须知道服务端的代码,这一点从官方给出的demo可以看出,这就比较烦人。所以我改用另外的一个python 库 :suds
suds下载安装很简单,这里就不说了。这里我想写一下它是怎么用的。我们先找一个网上已经发布的webservice:
http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl
(它是用.net发布的一个用来查询手机号码归属地的webservice),下面给出python客户端源代码:
#! /usr/bin/python
import suds
url = 'http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl'
client = suds.client.Client(url)
print client #结果看图1
result = client.service.getMobileCodeInfo(
18611217787
) #这个号码是办证的,拿来测试,哈哈
print result #结果看图2
print client.last_received() #结果看图3
图1
![用python客户端去访问webservice - 毅 - 读书百遍,其意自现](http://img319.ph.126.net/2Pl8eJOgZhRY-nPDOMeZwg==/3838474257403514328.png)
图2
![用python客户端去访问webservice - 毅 - 读书百遍,其意自现](http://img.ph.126.net/NCidMuxCcZj9QF7pudlwSQ==/3332100774301545633.png)
图3
![用python客户端去访问webservice - 毅 - 读书百遍,其意自现](http://img.ph.126.net/G5l4t6nx9fNmQMEu7lsqIg==/3332100774301545644.png)
图1表明我们获取了一个soap 对象
图2是我们调用这个soap里面的getMobileCodeInfo,返回的结果,这里注意调用的时候不能直接client.getMobileCodeInfo(),而是
client.service.getMobileCodeInfo()
但是如果我想要知道我获取的所有东西,比如soap的消息头是什么,那么怎么办呢,没关系,我们有client.last_received(),结果就如图3所示