我有一些webservice可以在axis2中的服务器上运行。如何用已经xml格式化的请求消息填充泡沫
我收到了一些xml数据,我们应该使用我们的webservice从第三方获得这些数据。根据我们web服务的wsdl,xml数据格式良好。
以便测试我做的:
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)
(在肥皂水中给出的axis2.py测试文件以下),我收到以下错误消息:据
urllib2.URLError: <urlopen error [Errno 10061] No connection could be made becau
se the target machine actively refused it>
我看到print Client
这个声明,它是在等待不在xml窗体下的对象,而是在python窗体下。 (这就是axis.py代码的其余部分所暗示的)
但是在我的情况下,我已经在xml中创建了数据。你知道我怎么可以直接输入它作为XML请求client.service.myWebserviceRequest
?
(它不是连接的一个问题,因为我访问该web服务的Axis2 getVersion
)
EDIT1:的print client statement
的输出。
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
令我百思不解的是,皂液客户端暴露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>
您能显示'print client'的输出吗? – dusan 2012-04-11 18:37:35
我已编辑并添加了信息。 – 2012-04-12 09:39:01
您应该调用'client.service.sendMyInformation'而不是'client.service.myWebserviceRequest'。但Suds期望有一个'DATA_HEADER'和一个'OTHER_CONTENT'对象,而不是你的'inputXml' ... – dusan 2012-04-12 12:42:47