通过Python包访问Siebel WSDL(SOAPpy,suds,requests)

时间:2016-06-13 13:05:44

标签: python soap wsdl siebel soappy

我正在尝试通过python模块访问Siebel WSDL。 My End Scenario通过外部链接在Siebel中创建服务请求。

我试过了,

请求,Suds和soapPY。

在对URL进行更改并将用户名和密码附加到其中并在正文中进行更改后将WSDL文件导入SOAP-UI时,它为我工作并提供200个服务器响应。

尝试使用邮递员(休息客户端)访问相同内容并提供添加了用户名和密码的URL。并将所需的XML作为正文的一部分传递,我收到500内部服务器错误。

不了解请求通过soapUI和邮递员的方式会有什么不同。

我必须做些什么,让它与邮递员合作。

在python中使用WSDL服务的正确方法是什么。

SOAP输入:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:aud="http://siebel.com/Service/ServiceReqs" xmlns:aud1="http://www.siebel.com/xml/%20Service%20Request%20IO">
   <soapenv:Header/>
   <soapenv:Body>
      <aud:SRQueryByExample_Input>
         <aud1:ListOfServiceRequestIo>
            <aud1:ServiceRequestOpen Operation="?">
            <aud1:IntegrationId>0000123</aud1:IntegrationId>
        </aud1:ServiceRequestOpen>
        </aud1:ListOfAudetemiServiceRequestIo>
      </aud:SRQueryByExample_Input>
   </soapenv:Body>
</soapenv:Envelope>

我需要知道Integration ID是否需要动态传递如何实现相同的目标。

非常感谢您的时间

1 个答案:

答案 0 :(得分:0)

如果您收到500错误,则表示请求停留在Web服务器上,并且尚未命中其后面的siebel服务器。如果错误是由xml中缺少的东西引起的,那么你将得到一个&#34; SBL - &#34;响应中的错误代码。直到你得到它,并且得到500个错误,请求SOAP还没有到达siebel服务器。

我不了解python,但我的建议是捕获来自python脚本的RAW消息,并将其与SOAP-UI中的RAW消息进行比较。特别检查SOAPAction字符串,它应该有正斜杠(/)和冒号(:)。 &#34;内容类型&#34;,&#34; text / xml&#34;

要进一步调试,您必须检查网络服务器日志以查看消息是如何到达那里的。