现在我使用 twisted.soap 来构建我的 soap 服务器,我想构建一个具有复数参数的函数,如下所示:
def soap_searchFlight(self,name=None,startpoint=None,destination=None):
d=Deferred()
d.addCallback(functions.searchFlight)
d.addErrback(functions.failure)
print "name"+name
print "startpoint"+startpoint
print "destination"+destination
requestdic={"name":name,"startpoint":startpoint,"destination":destination}
print requestdic
d.callback(requestdic)
return d.result
然后我写了一个脚本来测试:
import SOAPpy
import twisted
p = SOAPpy.SOAPProxy('http://localhost:7080/')
p.config.dumpSOAPOut=1
p.config.dumpSOAPIn=1
print p.searchFlight(name='3548',startpoint="北京飞机场",destination="上海飞机场")
它给我这样的返回:
name上海飞机场
startpoint北京飞机场
destination3548
看起来 args 顺序完全错误,那么会发生什么,我如何确保顺序正确?
最佳答案
在没有看到 functions.searchFlight
的情况下,有点难以分辨,但您似乎在回调中将字典传递给 in,然后假设字典中的项目按特定顺序排列(它们不是)。
更改 functions.searchFlight
的签名以获取一个元组,并按照您想要的顺序使用元组调用它。 (或者传入一个有序的字典……或者不要假设字典的项目是按照你创建它的顺序排列的)。
关于python - SOAP 以错误的顺序获取参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9901433/