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 を に渡しているように見えますが、dict 内の項目が特定の順序になっていると 想定しています (そうではありません)。

の署名をfunctions.searchFlightタプルを取るように変更し、必要な順序でタプルを使用して呼び出します。(または、順序付けられた辞書を渡します...または、辞書のアイテムが作成した順序であると想定しないでください)。

于 2012-06-01T23:45:39.083 に答える