axis2 のサーバー上で実行されている、テストする Web サービスがいくつかあります。
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>