2

我正在尝试调用需要 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

请提供任何帮助!

4

1 回答 1

8

Suds 具有用于传递可选参数的特殊 null() 函数,因为 None 被视为没有值。

我认为您的情况如下所示:

from suds import null

Int1 = client.factory.create('ns2:IntersectingRoad')
Int1.RoadName = null()
Int1.RoadType = null()
于 2013-05-27T10:18:51.367 回答