Я использую Zeep, чтобы попытаться взаимодействовать с SOAP-клиентом на SellerCloud.Когда я передаю свой аргумент для одной из операций API, я получаю ошибку ValueError -
ValueError: dictionary update sequence element #0 has length 15; 2 is required
Вот соответствующий код:
from zeep import Client
import datetime
wsdl_url = "http://tt.ws.sellercloud.com/scservice.asmx?WSDL"
client = Client(wsdl_url)
auth_type = client.get_type("ns0:AuthHeader")
sc_auth = auth_type(UserName=<username>, Password=<password>)
from_date = datetime.date(2018, 7, 3).strftime("%Y-%m-%d %H:%M:%S")
to_date = datetime.date(2018, 7, 11).strftime("%Y-%m-%d %H:%M:%S")
sc_keys = ["DateFrom", "DateTo", "UseSP", "ShippingStatusKind", "IncludeDS"]
sc_values = [from_date, to_date, "GET", "1", "TRUE"]
filters_type = client.get_type("ns0:SerializableDictionaryOfStringString")
filters = filters_type(sc_keys, sc_values)
print filters
print 'length of filters - ', len(filters)
with client.settings(extra_http_headers=sc_auth, force_https=False):
order_ids = client.service.Orders_Get(filters)
И ошибка трассировки стека -
Traceback (most recent call last):
File "seller-cloud.py", line 24, in <module>
order_ids = client.service.Orders_Get(filters)
File "/home/user/Envs/seller-cloud/local/lib/python2.7/site-packages/zeep/proxy.py", line 42, in __call__
self._op_name, args, kwargs)
File "/home/user/Envs/seller-cloud/local/lib/python2.7/site-packages/zeep/wsdl/bindings/soap.py", line 121, in send
options=options)
File "/home/user/Envs/seller-cloud/local/lib/python2.7/site-packages/zeep/wsdl/bindings/soap.py", line 99, in _create
http_headers.update(client.settings.extra_http_headers)
ValueError: dictionary update sequence element #0 has length 15; 2 is required
И вывод моих операторов печати до того, где происходит ошибка -
{
'Keys': [
'DateFrom',
'DateTo',
'UseSP',
'ShippingStatusKind',
'IncludeDS'
],
'Values': [
'2018-07-03 00:00:00',
'2018-07-11 00:00:00',
'GET',
'1',
'TRUE'
]
}
length of filters - 2
Я бился головой об этомпока, но не могу найти, где происходит вся эта длительная сделка.Даже если я передаю пустой массив, такой как: filters = filters_type([])
, я все равно получаю ошибку длины 15.