目前主要在维护的系统是siebel,其实时接口方式基本都是webservice,而其中又以inbound接口居多。外系统技术开发人员在初次对接siebel接口时,经常会遇问我怎么写siebel接口,无奈我也不了解java,.net等技术也帮不上忙。正好最近在学习python,就来尝试一下调用siebel的webservice接口。
通过这一两天的摸索,通过2种方式实现了siebel webservice的调用。第一种方式是最基础的,使用httplib模块,此种方式不需要本地wsdl文件。贴代码吧
import sys, httplib
SM_TEMPLATE = """<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Body>
<m:Query xmlns:m="http://siebel.com/asi/BYM">
<ContactId xsi:type="xsd:string">%s</ContactId>
</m:Query>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
"""
SoapMessage = SM_TEMPLATE%("1-IO8-2667")
webservice = httplib.HTTP("110.100.108.131")
webservice.putrequest("POST", "/eai_anon_chs/start.swe?SWEExtSource=AnonWebService&SWEExtCmd=Execute HTTP/1.0")
webservice.putheader("Host", "110.100.108.131")
webservice.putheader("User-Agent", "Python post")
webservice.putheader("Content-type", "text/xml; charset