gpt4 book ai didi

python - 在运行时更改 suds 客户端的 Web 服务 url(保留 wsdl)

转载 作者:太空狗 更新时间:2023-10-29 21:01:53 25 4
gpt4 key购买 nike

首先,我的问题类似于this one

但它有点不同。我们拥有的是一系列环境,具有相同的服务集。对于某些环境(本地环境),我们可以访问 wsdl,从而生成 suds 客户端。对于外部环境,我们无法访问 wsdl。但同样,我希望我可以只更改 URL 而无需重新生成客户端。我已经尝试克隆客户端,但它不起作用。


编辑:添加代码:

    host='http://.../MyService.svc'
wsdl_file = 'file://..../wsdl/MyService.wsdl'

client = suds.client.Client(wsdl_file, location=host, cache=None)

#client = baseclient.clone()

#client.options.location = otherhost

client.set_options(port='BasicHttpBinding_IMyService')

result = client.service.IsHealthy()

这给了我这个异常(exception):

带有 Action ' http://tempuri.org/IMyService/IsHealthy 的消息' 由于 EndpointDispatcher 上的 ContractFilter 不匹配,因此无法在接收器处进行处理。这可能是因为契约(Contract)不匹配(发送方和接收方之间的操作不匹配)或发送方和接收方之间的绑定(bind)/安全不匹配。检查发送方和接收方是否具有相同的契约(Contract)和相同的绑定(bind)(包括安全要求,例如消息、传输、无)。

问题是,如果我将客户端直接设置为主机,它工作正常: 客户端 = suds.client.Client(主机)

如您所见,我已尝试克隆客户端,但出现相同的异常。我什至试过这个:

    baseclient = suds.client.Client(host)

client = baseclient.clone()

client.options.location = otherhost
....

得到了同样的异常。

谁能帮帮我?

最佳答案

client.sd[0].service.setlocation(new_url)

...是“手动”方式,即。 per service-description .

client.set_option(new_url)

...应该也可以,per the author .

选项 is a wrapped/protected attr -- 直接编辑很可能会被忽略。

关于python - 在运行时更改 suds 客户端的 Web 服务 url(保留 wsdl),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2836331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com