我有一些web服务要测试,在服务器上运行,在axis2上。
我收到了一些我们应该使用我们的网络服务从第三方收到的xml数据。 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 webservice 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
让我感到困惑的是,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>
答案 0 :(得分:2)
在寻找答案时看到了这个问题,
你解决了吗?你看起来像下面的消息注入(诊断/测试?)¶ 服务API提供消息/回复注入。
要注入要发送的soap消息或注入要处理的回复或错误,就好像soap服务器返回的那样,只需指定__inject关键字参数。
调用服务时。例如:
发送原始肥皂消息:
print client.service.test(__inject={'msg':message})
GP
答案 1 :(得分:1)
从我认为suds版本0.39开始,您可以传入要发送的原始xm。
from suds.sax.text import Raw
xml = Raw('<person name="jeff"><age>5</age></person>')
result = client.service.sendMyInformation(xml)
要检查实际发送的内容,在构建客户端时,您不能将nosend标志设置为true。此标志不发送但生成肥皂
client=Client(url, nosend=True)
print client.envelope