Мыло получает аргументы с неправильным порядком в витой

Теперь я использую twisted.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

похоже, что порядок аргументов совершенно неправильный, так что же происходит и как я могу обеспечить правильный порядок?

1 ответ

Решение

Не видя functions.searchFlight, это немного сложно сказать, но кажется, что вы передаете запрос в обратном вызове, а затем предполагаете, что элементы в запросе находятся в определенном порядке (это не так).

Изменить подпись functions.searchFlight взять кортеж и назвать его кортежем в нужном вам порядке. (или передать заказанный диктат... или не предполагать, что предметы дикта находятся в том порядке, в котором вы их создали).

Другие вопросы по тегам