私は仕事のためにWebサービスにアクセスするためのクライアントを作成しようとしています。私は、PythonでSUDSとZSIを使用してクライアントを正常に作成しました。NetBeans 6.9を使用して、いくつかのJavaクライアントの作成を支援しました。成功したクライアントはすべて、私がインターネットで見つけた無料で利用できるWebサービスにアクセスしています。
私が仕事のために接続する必要があるクライアントは、それほど友好的であるとは証明していません。認証が必要です:
http://www.cmicdataservices.com/datacenter/service.asmx
このWebサービスのWSDL記述を取得すると、6つの方法があることがわかります。
Methods (6):
CheckIfAuthorized()
DataProcessed()
GetCurrentDataVer1()
GetID()
LogDSCStatus(xs:string _clientname, xs:string _status, xs:string _errormsg)
ResetNewDataReferences()
70種類も返品されます。それらの1つは認証タイプです。
PythonおよびJavaクライアントでは、これらの認証オブジェクトを作成できましたが、それ以上何もできませんでした。
WSDLからは、利用可能なものを使用してこれらの認証オブジェクトを作成する方法があることを私に示すものはありません。Webサービスのサプライヤーは、Adobe Airを使用して構築されたクライアントを提供しており、それをテストして、Webサービスに対して認証して使用できることを確認できます。
Webサービスとのインターフェースが必要になったのはこれが初めてであり、ここで不足しているものがあるかどうかはわかりません。このサービスで認証する方法について、ここで私が見逃している明らかなことがあるかどうか誰かに教えてもらえますか?
これが私が書いたPythonクライアントとその出力です。印刷クライアント行のコメントを解除すると、WSDL情報の見事な印刷出力を確認できます。
#!/usr/bin/python
from suds.client import Client
url='http://www.cmicdataservices.com/datacenter/service.asmx?wsdl'
client = Client(url)
#print client
print client.service.CheckIfAuthorized()
出力:
Traceback (most recent call last):
File "CMICTest.py", line 23, in <module>
print client.service.CheckIfAuthorized()
File "/usr/local/lib/python2.6/dist-packages/suds-0.4-py2.6.egg /suds/client.py", line 542, in __call__
return client.invoke(args, kwargs)
File "/usr/local/lib/python2.6/dist-packages/suds-0.4-py2.6.egg/suds/client.py", line 602, in invoke
result = self.send(soapenv)
File "/usr/local/lib/python2.6/dist-packages/suds-0.4-py2.6.egg/suds/client.py", line 649, in send
result = self.failed(binding, e)
File "/usr/local/lib/python2.6/dist-packages/suds-0.4-py2.6.egg/suds/client.py", line 702, in failed
r, p = binding.get_fault(reply)
File "/usr/local/lib/python2.6/dist-packages/suds-0.4-py2.6.egg/suds/bindings /binding.py", line 265, in get_fault
raise WebFault(p, faultroot)
suds.WebFault: Server raised fault: 'Server was unable to process request. ---> Object reference not set to an instance of an object.'