gpt4 book ai didi

python - 如何在 Python 中为 WSDL 创建 arrayType(使用 suds)?

转载 作者:太空狗 更新时间:2023-10-29 22:14:30 25 4
gpt4 key购买 nike

环境:

  • Python v2.6.2
  • 肥皂水 v0.3.7

我使用的 WSDL(服务器)具有以下模式子部分(我尝试使用纯文本清楚地编写它)-


[第 #1 小节]

searchRequest: (searchRequest){
userIdentification = (userIdentification){
username = ""
password = ""
}
itineraryArr = (itineraryArray){
_arrayType = ""
_offset = ""
_id = ""
_href = ""
_arrayType = ""
}
...
...

[第 2 小节]

itinerary: (itinerary){
departurePoint = (locationPoint){
locationId = None
radius = None
}
arrivalPoint = (locationPoint){
locationId = None
radius = None
}
...
...

'userIdentification'(这是一个“简单”类型)没有问题

但是,'itineraryArr' 是'itinerary' 的数组,我不知道如何使用python 创建XML 数组。

我尝试了几种组合,例如

itinerary0 = self.client.factory.create('itinerary')
itineraryArray = self.client.factory.create('itineraryArray')
itineraryArray = [itinerary0]
searchRequest.itineraryArr = itineraryArray

但我所有的试验都出现了相同的服务器错误 -

    Server raised fault: 'Cannot use object of type itinerary as array'
(Fault){
faultcode = "SOAP-ENV:Server"
faultstring = "Cannot use object of type itinerary as array"
}

最佳答案

我处于相同的情况,使用 RPC/编码样式 WS 和包含 soap 数组的方法。打印请求(其中 request = client.factory.create('Request'))给出:

(Request){
requestid = None
option =
(ArrayOfOption){
_arrayType = ""
_offset = ""
_id = ""
_href = ""
_arrayType = ""
}
}

Jacques (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 所期望的那样。

关于python - 如何在 Python 中为 WSDL 创建 arrayType(使用 suds)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1130819/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com