从Python连接WCF net.tcp协议
我正在使用一个叫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中使用这个服务。针对这种情况,你可以考虑以下几种选择:
- 创建一个.NET桥接程序,然后从Python中使用它(就像你提到的那样)
- 请求服务提供者提供一个额外的接口,比如使用basicHttpBinding