我正在尝试使用 python 的suds在 eBay 的网络服务上发出一些请求,但我总是收到此错误:
“缺少 SOA 操作名称标头”
我使用的代码如下:
client = Client(EBAY_WSDL)
ns1 = ('ns1', 'http://www.ebay.com/marketplace/search/v1/services')
operation_name = Element('X-EBAY-SOA-OPERATION-NAME',ns=ns1).setText('findItemsByKeywords')
appid = Element('X-EBAY-SOA-SECURITY-APPNAME',ns=ns1).setText('MY APP ID')
headers = [appid,operation_name]
client.set_options(soapheaders=headers)
我看不出我在标题上做错了什么......有人可以为我指出吗?
谢谢!
- 编辑 -
好吧,对于任何有同样问题的人。我已经解决了这个问题。
问题是我正在设置soap标头,而它应该是http标头。因此,答案是将标头放在 Client 构造函数中,如下所示:
operation_name = {'X-EBAY-SOA-OPERATION-NAME':'findItemsByKeywords', 'SomeOther':'blabla'}
client = Client(EBAY_WSDL,headers=operation_name)
就是这样!