我收到了一些调用SOAP服务的php示例代码,现在需要将其转换为Python。在php代码中,它们将头设置如下:
$auth = array();
$auth['token'] = 'xxx';
if ($auth) {
// add auth header
$this->clients[$module]->__setSoapHeaders(
new SoapHeader(
$namespace,
'auth',
$auth
)
);
}
所以auth
头应该是这样的:['token' => 'xxx']
。然后,我将wsdl加载到SoapUI,其中给出了以下示例xml:
在pysimplesoap中,我现在尝试如下操作:
from pysimplesoap.client import SoapClient
WSDL = 'https://example.com/some/path/sub.wsdl'
TOKEN = 'xxx'
client = SoapClient(wsdl=WSDL, trace=True)
client['auth'] = {'token': TOKEN}
print client.customer_logos_pull({})
但是我得到一个错误,说ExpatError: not well-formed (invalid token): line 1, column 0
,这是有意义的,因为在记录的xml中,我看到头是空的:
<soap:Header/>
我试图通过在auth
之前包括sub:
这样来改变代码:client['sub:auth'] = {'token': TOKEN}
,但是我得到了相同的错误。在
有人知道我做错了什么吗?欢迎所有提示!在
所以我认为我们可以通过使用suds库来解决这个问题。在
下面是一个非常基本的示例,说明如何发送包含头的SOAP请求:
示例:
以下是如何发送以下标题的示例:
^{pr2}$NB:我实际上还没有尝试过这一点,因为我无法访问任何可用的SOAP/XML服务来进行测试!在
所以在你的例子中,你可以这样做:
然后对您的
client
对象调用set_options()
:通过运行以下命令,您可以使用pip轻松安装suds:
相关问题 更多 >
编程相关推荐