其实原理就是根据webservice协议指定的request的soap格式,用http post的method把参数传递过去就算是调用了,然后解析返回的soap就可以了
鉴于网上python3.x 的http post 实现代码比较少,我贴一段:
def InvokeWebservice(phone,msg):
texturl='http://127.0.0.1:7789/SMSService.asmx?op=SendShortMessage'
postcontent='<?xml version="1.0" encoding="utf-8"?>'
postcontent+='<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/">'
postcontent+='<soap:Body>'
postcontent+='<SendShortMessage xmlns="http://tempuri.org/">'
postcontent+='<phonenum>'+phone+'</phonenum>'#参数
postcontent+='<message>'+msg+'</message>'#参数
postcontent+='</SendShortMessage>'
postcontent+='</soap:Body>'
postcontent+='</soap:Envelope>'
req=urllib.request.Request(texturl,data=postcontent.encode('utf-8'),headers={'Content-Type': 'text/xml'})
urllib.request.urlopen(req)