在SUDS库中更改Web服务URL


问题内容

使用SUDS SOAP客户端,如何指定Web服务URL。我可以清楚地看到在客户端构造函数中指定了WSDL路径,但是如果我不想更改Web服务url怎么办?


问题答案:

Suds支持具有多个服务或多个端口(或两者都有)的WSDL,并且没有关于您正在使用的对象的任何详细信息,我只是在
猜测 这就是您要寻找的东西。如果您提供了更多细节(例如您的Client实例的样子),那么这个问题将更容易回答。

成功构建之后Client,您可以print查看可用的服务,方法,端口和类型。

以下示例直接来自suds文档。

来自suds网站的示例:

from suds.client import Client
url = 'http://www.thomas-bayer.com/axis2/services/BLZService?wsdl'
client = Client(url) 
print client

输出此:

Suds - version: 0.3.7 build: (beta) R550-20090820

Service (BLZService) tns="http://thomas-bayer.com/blz/"
   Prefixes (1)
     ns0 = "http://thomas-bayer.com/blz/"
   Ports (2):
     (soap)
       Methods (1):
         getBank(xs:string blz, )
     (soap12)
       Methods (1):
         getBank(xs:string blz, )
   Types (5):
      getBankType
      getBankResponseType
      getBankType
      getBankResponseType
      detailsType

Service (OtherBLZService) tns="http://thomas-bayer.com/blz/"
   Prefixes (1)
     ns0 = "http://thomas-bayer.com/blz/"
   Ports (2):
     (soap)
       Methods (1):
         getBank(xs:string blz, )
     (soap12)
       Methods (1):
         getBank(xs:string blz, )
   Types (5):
      getBankType
      getBankResponseType
      getBankType
      getBankResponseType
      detailsType

可以通过多种方式访问​​每个服务,但这与通过方法限定的每个服务是不同的端口:

## service: BLZService, port: soap12, method: getBank
client.service['BLZService']['soap12'].getBank()
## service: OtherBLZService, port: soap, method: getBank
client.service['OtherBLZService']['soap'].getBank()

您正在使用这种东西吗?如果是这样,请访问他们的文档,我认为您会发现这些文档绰绰有余。如果没有,请考虑在您的问题中添加尽可能多的细节,以使我们有更多的合作机会!