2010-01-14 63 views
2

我正在使用SUDS(如SOAP)来测试WSDL文件。这些方法包含链接到更多功能的类型。我不知道如何访问存储在显示的类型中的变量。一些示例代码如下:将参数传递到SUDS客户端语句

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 = "" 

参数比输入简单值更复杂。

+0

我在下一篇文章中解决了这个问题。 – chrissygormley 2010-01-18 10:02:23

+0

你可以发布一个链接到你的“下一篇文章”? – 2016-04-06 08:47:59

回答

2

尝试调用该服务的方法:

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

你需要确定什么样的价值观摆在这些参数传递给AbsoluteMove方法。

1

Client.factory.create用于实例化您正在使用的服务的内部对象类型。如果你只是做一个方法调用(看起来你是),直接调用它。

相关问题