我正在尝试调用需要Null(None)属性的服务,但suds会删除它们。我需要发送..
<ns1:Body>
<ns0:QueryIntersection>
<ns0:intersectingRoad>
<ns2:RoadName xsi:nil="true"/>
<ns2:RoadType xsi:nil="true"/>
</ns0:intersectingRoad>
<ns0:subjectRoad>
<ns2:RoadName>BURKE</ns2:RoadName>
<ns2:RoadType>ROAD</ns2:RoadType>
</ns0:subjectRoad>
</ns0:QueryIntersection>
但是suds删除了IntersectingRoad对象,只发送
<ns1:Body>
<ns0:QueryIntersection>
<ns0:subjectRoad>
<ns2:RoadName>BURKE</ns2:RoadName>
<ns2:RoadType>ROAD</ns2:RoadType>
</ns0:subjectRoad>
</ns0:QueryIntersection>
如果我在IntersectingRoad对象中设置其中一个值,它将发送它并正常工作,但None也是一个有效的请求。 这是我正在使用的代码的摘录......
Int1 = client.factory.create('ns2:IntersectingRoad')
Int1.RoadName = None
Int1.RoadType = None
Int2 = client.factory.create('ns2:SubjectRoad')
Int2.RoadName = "BURKE"
Int2.RoadType = "ROAD"
try:
Ints = client.service.QueryIntersection(Int1,Int2, )
except Exception as e:
print e.message
请帮忙!
答案 0 :(得分:8)
Suds具有用于传递可选参数的特殊null()函数,因为None被视为缺少值。
我认为你的情况如下:
from suds import null
Int1 = client.factory.create('ns2:IntersectingRoad')
Int1.RoadName = null()
Int1.RoadType = null()