私は仕事のためにWebサービスにアクセスするためのクライアントを作成しようとしています。私はSUDSとZSIをPythonで使ってクライアントを書いています。 NetBeans 6.9を使用して、いくつかのJavaクライアントの作成を支援しました。成功したクライアントは、私がインターネット上で見つけた無料のWebサービスにすべてアクセスしています。Webサービスへのアクセス
仕事のために私が接続する必要があるクライアントは、とても親切であることが証明されていません。私は私が見るこのWebサービスのWSDL記述をつかむ6つのメソッドがある場合は
http://www.cmicdataservices.com/datacenter/service.asmx
:それは認証を必要としません。
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.'
私が遣わす要求があり、実際の認証PARAMATERSなどが欠落しています。リクエストに必要なヘッダ要素を追加泡で作成したサンプルSOAPクライアントが含まれているあなたの他の質問に私の答えを見てみましょうこれらを生成する方法はありません。私はXMLリクエストを手作業で書くことを避けようとしており、単純なhttpリクエストを送信しています。 – grantk
この例を検討してみてください。 http://svn.fedorahosted.org/svn/suds/trunk/tests/rhq.pyこの例でオブジェクトを作成し、それをpersonオブジェクトに配置してから、その人とのサービスを呼び出す方法に注目してください。 – sankyo
もう一度、私は人のオブジェクトがどのように使われているかを見ています。私は私のサービスにもリストされているオブジェクトを作成することができます。問題は、サーバー側でこれらのオブジェクトを作成する実際の方法や、引数として受け入れるメソッドがないことです。私は手作業でリクエストを作成して送信しましたが、今では応答を受け取ることができました(私はJavaを使用しました) – grantk