0
我试图访问与使用泡沫Python的webservice。这里是我的代码:Suds - 例外:(401,u'Unauthorized')
# WSDL fails to import schema, import this and create client.
imp = Import('http://schemas.xmlsoap.org/soap/encoding/')
imp.filter.add('http://api.daisycon.com/publisher/soap//program/')
d = ImportDoctor(imp)
encoded = base64.b64encode("%s:%s" % (username, password))
authenticationHeader = {
"SOAPAction" : "http://api.daisycon.com/publisher/soap//program/#getSubscriptions",
"Authorization" : "Basic %s" % encoded
}
client = suds.client.Client(self.url, headers = authenticationHeader, doctor=d)
但是,调用方法时产生以下错误:
No handlers could be found for logger "suds.client"
Traceback (most recent call last):
File "C:\Users\User\Documents\Crawler\src\Crawlers\Daisycon.py", line 39, in <module>
Crawler().main()
File "C:\Users\User\Documents\Crawler\src\Crawlers\Daisycon.py", line 37, in main
print client.service.getSubscriptions()
File "C:\Python27\Lib\site-packages\suds\client.py", line 542, in __call__
return client.invoke(args, kwargs)
File "C:\Python27\Lib\site-packages\suds\client.py", line 602, in invoke
result = self.send(soapenv)
File "C:\Python27\Lib\site-packages\suds\client.py", line 649, in send
result = self.failed(binding, e)
File "C:\Python27\Lib\site-packages\suds\client.py", line 708, in failed
raise Exception((status, reason))
Exception: (401, u'Unauthorized')
我已经尝试添加各种方式,我可以在网上找到的凭据。什么都没有我100%确信证书是正确的。
另一种方式我想:
t = HttpAuthenticated(username=username,
password=password)
client = suds.client.Client(self.url, transport=t, doctor=d)
这就造成:
No handlers could be found for logger "suds.client"
Traceback (most recent call last):
File "C:\Users\User\Documents\Crawler\src\Crawlers\Daisycon.py", line 35, in <module>
Crawler().main()
File "C:\Users\User\Documents\Crawler\src\Crawlers\Daisycon.py", line 33, in main
print client.service.getFeeds()
File "C:\Python27\Lib\site-packages\suds\client.py", line 542, in __call__
return client.invoke(args, kwargs)
File "C:\Python27\Lib\site-packages\suds\client.py", line 602, in invoke
result = self.send(soapenv)
File "C:\Python27\Lib\site-packages\suds\client.py", line 649, in send
result = self.failed(binding, e)
File "C:\Python27\Lib\site-packages\suds\client.py", line 702, in failed
r, p = binding.get_fault(reply)
File "C:\Python27\Lib\site-packages\suds\bindings\binding.py", line 265, in get_fault
raise WebFault(p, faultroot)
suds.WebFault: Server raised fault: 'Need authorisation'
引发同样的错误在第二个例子。 – SergioP 2014-09-08 06:57:54
没有这样的运气(直接包含l/p到标题部分)?:headers = {'username':'username','password':'password'}然后传递给Client。你也可以试试这个:client.set_options(headers = {'username':'username','password':'password'}) – 2014-09-08 08:35:03
也引发同样的错误 – SergioP 2014-09-08 10:59:35