3

现在我使用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 顺序完全错误,所以会发生什么,我如何确保正确的顺序?

4

1 回答 1

1

没有看到functions.searchFlight,这有点难以分辨,但似乎您在回调中将 dict 传递给 in,然后假设dict 中的项目按特定顺序排列(它们不是)。

将签名更改functions.searchFlight为获取一个元组,并按照您想要的顺序使用一个元组调用它。(或者传入一个有序的字典......或者不要假设字典的项目是你创建它的顺序)。

于 2012-06-01T23:45:39.083 回答