是否可以替换Suds/python中的模式位置?

2024-10-03 23:25:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图访问一个在反向代理/重定向之后托管的WCF服务。WCF服务报告的schemaLocation错误,基于它实际从哪台机器得到服务。例如,我得到这样的信息:

<wsdl:types>
<xsd:schema targetNamespace="http://tempuri.org/Imports">
<xsd:import schemaLocation="http://badhost1.com/service.svc?xsd=xsd0" namespace="http://tempuri.org/"/>
<xsd:import schemaLocation="http://badhost1.com/service.svc?xsd=xsd1" namespace="http://schemas.microsoft.com/2003/10/Serialization/"/>
</xsd:schema>
</wsdl:types>

现在,它不应该是http://badhost1.com,而应该是http://goodhost.com。如果我把xsd指向goodhost版本,我就可以在浏览器中打开xsd,显然badhost版本不起作用。在

有没有办法用正确的端点替换这些不好的端点?在


Tags: orgimportcomhttpschemaservicenamespacewsdl
1条回答
网友
1楼 · 发布于 2024-10-03 23:25:48

原来这个人可以创建plugins。这个很简单:

import re
from suds.plugin import DocumentPlugin

class FixUrls(DocumentPlugin):
    def loaded(self, context):
        context.document = re.sub(r'badhost\d', 'goodhost', context.document)

然后叫做la:

^{pr2}$

这就够了!在

相关问题 更多 >