2012-03-28 6 views
3

Jetzt verwenden twisted.soap ich meine Seife Server zu bauen, ich möchte eine Funktion mit mehreren Argumenten wie diese bauen:Soap bekommen Argumente mit falschen Reihenfolge in Twisted

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 

und ich schrieb ein Skript Test:

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="上海飞机场") 

es gibt mir wie folgt zurück:

name上海飞机场 
startpoint北京飞机场 
destination3548 

es sieht aus wie die args sind Reihenfolge völlig falsch, so was passiert, und h Wie kann ich die richtige Reihenfolge gewährleisten?

+0

Aber wenn ich die Methode wie diese Methode aufrufen, funktioniert es gut: p.searchFlight ('3548', "北京 飞机场", "上海 飞机场") – Daemoneye

Antwort

1

Ohne functions.searchFlight zu sehen, ist es ein wenig schwer zu sagen, aber es scheint, dass Sie ein dict in in einem Rückruf vorbei sind, dann , dass die Elemente in der dict unter der Annahme, in einer bestimmten Reihenfolge sind (sie sind nicht).

Ändern Sie die Signatur von functions.searchFlight, um ein Tupel zu nehmen, und rufen Sie es mit einem Tupel in der von Ihnen gewünschten Reihenfolge auf. (Oder geben Sie ein geordnetes Diktat ein ... oder nehmen Sie nicht an, dass die Elemente des Diktats in der Reihenfolge sind, in der Sie es erstellt haben).

Verwandte Themen