我有一些 web 服务要测试,在 axis2 的服务器上运行。
我得到了一些 xml 数据,我们应该使用我们的网络服务从第三方接收这些数据。根据我们网络服务的 wsdl,该 xml 数据格式正确。
为了测试我做的:(遵循 suds 中给出的 axis2.py 测试文件)
url = 'http://localhost:8080/axis2/services/{0}?wsdl'.format('myWebService')
print 'url=%s' % url
client = Client(url)
print client
with open("input.xml") as f:
inputXml = f.read()
print client.service.myWebserviceRequest(inputXml)
我收到以下错误消息:
urllib2.URLError: <urlopen error [Errno 10061] No connection could be made becau
se the target machine actively refused it>
就我在语句print Client
中看到的而言,suds 正在等待不是xml 形式的对象,而是python 形式的对象。 (这就是 axis.py 代码的其余部分所建议的)
但在我的例子中,我已经将数据格式化为 xml。你知道我如何将它作为 xml 直接输入到请求 client.service.myWebserviceRequest
中吗?
(这不是连接问题,因为我访问了 axis2 webservice getVersion
)
EDIT1:打印客户端语句
的输出。
Service ( myWebService ) tns="ws.myCompany.com"
Prefixes (2)
ns2 = "myData.ws.myCompany.com"
ns3 = "ws.myCompany.com"
Ports (1):
(MyServiceSSOAP12port_http)
Methods (1):
sendMyInformation(ns2:DATA_HEADER DATA_HEADER, ns2:OTHER_CONTENT OTHER_CONTENT, )
Types (1):
WSExceptionType
让我感到困惑的是,suds 客户端公开了一个形式为 sendMyInformation((ns2:DATA_HEADER DATA_HEADER, ns2:OTHER_CONTENT OTHER_CONTENT,)
而在我的 wsdl 中,要提供的数据是:
<xs:element name="WHOLE_CONTENT">
<xs:complexType>
<xs:sequence>
<xs:element ref="DATA_HEADER"/>
<xs:element ref="OTHER_CONTENT"/>
</xs:sequence>
</xs:complexType>
</xs:element>
最佳答案
刚刚找答案的时候看到这个问题,
你解决了吗?你看起来像下面这样吗
消息注入(inject)(诊断/测试?)¶ 服务 API 提供消息/回复注入(inject)。
要注入(inject)要发送的 soap 消息或注入(inject)要处理的回复或错误,就好像由 soap 服务器返回一样,只需指定 __inject 关键字参数。
调用服务时。例如:
发送原始 SOAP 消息:
print client.service.test(__inject={'msg':message})
全科医生
关于python - 如何使用已经是 xml 格式的请求消息来提供泡沫,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10109877/