python - SOAP 以错误的顺序获取参数

标签 python sqlalchemy soappy

现在我使用 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/

相关文章:

python SOAP 添加 header

python - gpxpy 未在 to_xml() 中输出扩展名

python - 如何使用 GDAL 更改栅格的分辨率?

python - Redis 和套接字仅发送给某些客户端

python - 如何在虚拟环境中安装模块

python - SQLAlchemy - Session.query 循环中的 Session.commit 重置对象 __dict__

python - 在 SQLAlchemy 中使用 Postgres/PostGIS View

python - 可以在 PostgreSQL INSERT 语句中放置的最大 VALUES 数量是多少?