1

我有一些 web 服务要测试,在axis2 中的服务器上运行。

我已经获得了一些我们应该使用我们的 web 服务从第三方接收的 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 Client 暴露了表单的服务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>
4

2 回答 2

3

刚在找答案的时候看到这个问题

你解决了吗?你看起来像下面这样吗

消息注入(诊断/测试?)¶ 服务 API 提供消息/回复注入。

要注入要发送的soap 消息或注入要处理的回复或故障,就像由soap 服务器返回一样,只需指定__inject 关键字参数。

调用服务时。例如:

发送原始肥皂消息:

print client.service.test(__inject={'msg':message})
全科医生

于 2012-07-24T09:17:54.023 回答
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
于 2014-10-30T07:44:54.280 回答