gra*_*ntk 5 python soap web-services suds
我一直在尝试编写一个客户端来访问Web服务以进行工作。我已经成功地将SUDS和ZSI与Python一起编写了客户端。我使用NetBeans 6.9来帮助编写一些Java客户端。成功的客户都在访问我在互联网上找到的免费可用的Web服务。
我需要连接以进行工作的客户端并不是那么友好。它确实需要身份验证:
http://www.cmicdataservices.com/datacenter/service.asmx
如果我获取了此Web服务的WSDL描述,我会看到有六种方法。
Methods (6):
CheckIfAuthorized()
DataProcessed()
GetCurrentDataVer1()
GetID()
LogDSCStatus(xs:string _clientname, xs:string _status, xs:string _errormsg)
ResetNewDataReferences()
Run Code Online (Sandbox Code Playgroud)
还返回了70种类型。其中之一是身份验证类型。
在我的Python和Java客户端中,我已经能够创建这些Authentication对象,但无法做进一步的事情。
从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()
Run Code Online (Sandbox Code Playgroud)
输出:
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.'
Run Code Online (Sandbox Code Playgroud)