【发布时间】:2012-04-11 16:17:52
【问题描述】:
我有一些 web 服务要测试,在 axis2 中的服务器上运行。
我收到了一些 xml 数据,我们应该使用我们的 Web 服务从第三方接收这些数据。 xml 数据根据我们的 web 服务的 wsdl 格式化。
为了测试我做的:(按照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 webservicegetVersion)
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
让我感到困惑的是,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>
【问题讨论】:
-
你能显示
print client的输出吗? -
我已经编辑并添加了信息。
-
您应该调用
client.service.sendMyInformation而不是client.service.myWebserviceRequest。但是 Suds 期望DATA_HEADER和OTHER_CONTENT对象,而不是您的inputXml...