从Python连接WCF net.tcp协议

1 投票
1 回答
4434 浏览
提问于 2025-04-18 02:57

我正在使用一个叫suds的库来连接SOAP API,但我不太确定是否可以仅用Python库来解决这个问题。

首先,我连接到这个API。

client.Client("http://localhost:8003/mex")

一旦连接成功,我可以看到API里的每一个方法,但问题是当我尝试调用其中一个方法时:

client.service.MethodX()
urllib2.URLError: <urlopen error unknown url type: net.tcp>

我和提供者沟通过,运行时这个API是通过net.tcp://localhost:8002/PublicAPI来访问的。我找不到解决这个问题的方法,除非创建一个用C#开发的桥接程序,把数据发送到我的Python脚本。

1 个回答

3

首先,如果这个服务是通过 NetTcpBinding 公开的,你就不能用基于SOAP的库来使用它,因为 net.tcp 使用的是二进制消息编码(消息不是以SOAP格式传输的)。而且(据我所知)WCF的 net.tcp 并不符合任何行业标准,它是为了.NET应用之间的高性能通信而设计的,而不是为了不同系统之间的互操作性。因此,我怀疑你能否直接从Python中使用这个服务。针对这种情况,你可以考虑以下几种选择:

  1. 创建一个.NET桥接程序,然后从Python中使用它(就像你提到的那样)
  2. 请求服务提供者提供一个额外的接口,比如使用basicHttpBinding

撰写回答