【问题标题】:Python: Sending Raw XML via Suds (jurko)Python:通过 Suds 发送原始 XML (jurko)
【发布时间】:2015-06-24 00:10:57
【问题描述】:

我正在与 SOAP API 交互,其中特定方法需要原始 XML 字符串作为参数。像这样:

import suds.client as sudscl

client = sudscl.Client('http://host/ws.wsdl', location='http://host/ws')

session = 'test123'
options = '<rawXML><Item>Foobar</Item></rawXML>'

result = client.service.ExecuteSearch(session, options)

相当直接。但是,suds 对我刚刚发送的 XML 字符串进行 HTML 编码,如下所示:

 <?xml version="1.0" encoding="UTF-8"?>
 <SOAP-ENV:Envelope xmlns:ns0="http://host/ws">
   <SOAP-ENV:Header/>
   <ns1:Body>
     <ns0:ExecuteSearch>
        <ns0:session>test123</ns0:session>
        <ns0:options>
          &lt;rawXML&rt;&lt;Item&rt;Foobar&lt;/Item&rt;&lt;/rawXML&rt;
        </ns0:options>
     </ns0:ExecuteSearch>
   </ns1:Body>
 </SOAP-ENV:Envelope>

嘘!有什么方法可以让 suds 原封不动地传入 XML 字符串?

谢谢!

【问题讨论】:

  • this other answer 有帮助吗?
  • @summea - 不幸的是,没有。 1. 这将需要我构建然后传入整个 SOAP 消息,而实际上我只想传入 一个参数 未修改(而不是从头开始构建整个 XML 消息)。 2. _inject 对我不管用(_TypeError: ExecuteSearch() got an unexpected keyword argument '__inject')。

标签: python xml suds


【解决方案1】:

好的,知道了。

from suds.sax.text import Raw
import suds.client as sudscl

client = sudscl.Client('http://host/ws.wsdl', location='http://host/ws')

session = 'test123'
options = Raw('<rawXML><Item>Foobar</Item></rawXML>')

result = client.service.ExecuteSearch(session, options)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多