我试图用suds执行一个soap服务。来自服务器的参数签名是这样的(摘自 print(client)
)
xs:anyType orderBy
我的suds客户端抛出以下异常
suds.TypeNotFound: Type not found: 'orderBy'
在我的代码中,我传递了以下数组作为参数
['DESC']
在PHP中,它的工作原理是这样的
$client->serviceFunctionName([...], array( 'eventdate' => 'DESC' ))
在来自服务器的原始 WSDL-XML 中,参数看起来是这样的。
<wsdl:part name="orderBy" type="xs:anyType"/>
我如何在python suds中正确地完成这个任务?
更新
尝试了以下内容,但被服务器拒绝。
dict(eventdate='DESC')
服务器的错误信息
suds.WebFault: Server raised fault: 'Invalid parameter type: param=sort expected=Array got=object'
祝贺
这通常不值得争取。大多数旧的web apis都提供了一些PHP代码,只是工作。如果你有它,用它来生成模板,以后你可以用你熟悉的非SOAP请求lib。
<?php
// Setting up SOAP request here like in api documentation
echo "REQUEST BODY:\n" . $client->__getLastRequest() . "\n";
echo "REQUEST HEADERS:\n" . $client->__getLastRequestHeaders() . "\n";
头部通常包含内容类型,基本授权令牌,以及发出请求的端点。Body可以用来创建模板,可以用python或其他栈进行参数化和请求。