Я в том же случае, с RPC / закодированным стилем WS и методом, который содержит массив мыла. запрос на печать (где request = client.factory.create('Request')
) дает:
(Request){
requestid = None
option =
(ArrayOfOption){
_arrayType = ""
_offset = ""
_id = ""
_href = ""
_arrayType = ""
}
}
Решение, данное Жаком (1request.option.append (option1) 1), не работает, так как заканчивается сообщением об ошибке ArrayOfOption instance has no attribute append
.
Решение, данное mcauth, выглядит следующим образом:
array = client.factory.create('ArrayOfOption')
array.item = [option1, option2, option3, option4, option5, option6]
request.option=array
Это работает так, поскольку в полученном сообщении SOAP отсутствует атрибут arrayType
:
<option xsi:type="ns3:ArrayOfOption">
Лучшее решение, которое я нашел, также самое простое:
request.option = [option1, option2, option3, option4, option5, option6]
Это заканчивается хорошим SOAP-сообщением:
<option xsi:type="ns0:ArrayOfOption" ns3:arrayType="ns0:Option[6]">
как и ожидалось серверной стороной WS.