Передача аргументов в оператор клиента SUDS - PullRequest
2 голосов
/ 14 января 2010

Я использую SUDS (например, SOAP) для тестирования файлов WSDL. Методы содержат типы, которые связаны с другими функциями. Я не уверен, как получить доступ к переменным, хранящимся в отображаемых типах. Пример кода приведен ниже:

from suds.client import Client
client=Client('http://eample.wsdl')
print client

ответ:

 Ports (1):
      (PTZ)
         Methods (4):
            AbsoluteMove(ns4:ReferenceToken ProfileToken, ns4:PTZVector Destination, ns4:PTZSpeed Speed, )
         Types (303):
            ns4:PTZSpeed

Я могу получить доступ к этим функциям. Я не могу найти документацию о том, как проверить функции в SUDS. Я хочу проверить, работают ли функции, и проверить их возвращаемые значения. Кто-нибудь знает, как это сделать?

Я использовал приведенную ниже команду для отображения всех дочерних функций.

client.factory.create('AbsoluteMove.PTZSpeed.Speed.PanTilt')

Основная проблема заключается в передаче значений в функции и получении возвращаемых значений.

Я пытался передать аргументы, но у параметров есть атрибуты, хранящиеся в атрибутах. Ниже показан макет структуры параметров, к которым я пытаюсь получить доступ.

(AbsoluteMove){
    ProfileToken = None
    Destination = 
      (PTZVector){
         PanTilt = 
            (Vector2D){
               _x = ""
               _y = ""
               _space = ""
            }
         Zoom = 
            (Vector1D){
               _x = ""
               _space = ""
            }
      }
   Speed = 
      (PTZSpeed){
         PanTilt = 
            (Vector2D){
               _x = ""
               _y = ""
               _space = ""
            }
         Zoom = 
            (Vector1D){
               _x = ""
               _space = ""

Параметры более сложны, чем просто ввод простых значений.

Ответы [ 2 ]

3 голосов
/ 15 января 2010

Попробуйте вызвать метод на сервисе:

from suds.client import Client
client=Client('http://eample.wsdl')
res = client.service.AbsoluteMove(profile_token, destination, speed)
print res

Вам нужно будет определить, какие значения нужно ввести для этих аргументов в метод AbsoluteMove.

1 голос
/ 15 января 2010

Client.factory.create - для создания экземпляров типов объектов, которые являются внутренними для службы, которую вы используете. Если вы просто делаете вызов метода (который вам кажется), вызовите его напрямую.

...