1
soapを使用してsoapサービスにアクセスします。sudsでURLを書き換えます。クライアント
url = 'https://example.com/scr-webservices/soap/AuthenticationService?wsdl'
client = Client(url)
client.login()
結果:私はそれにデバッグ、そしてこの問題が発生したと思われる場合は
File ".../suds/client.py", line 112, in __init__
self.wsdl = reader.open(url)
File ".../suds/reader.py", line 157, in open
d = self.fn(url, self.options)
File ".../suds/wsdl.py", line 159, in __init__
self.build_schema()
File ".../suds/wsdl.py", line 220, in build_schema
self.schema = container.load(self.options)
File ".../suds/xsd/schema.py", line 93, in load
child.open_imports(options)
File ".../suds/xsd/schema.py", line 305, in open_imports
imported = imp.open(options)
File ".../suds/xsd/sxbasic.py", line 542, in open
result = self.download(options)
File ".../suds/xsd/sxbasic.py", line 560, in download
d = reader.open(url)
File ".../suds/reader.py", line 84, in open
d = self.download(url)
File ".../suds/reader.py", line 100, in download
fp = self.options.transport.open(Request(url))
File ".../suds/transport/https.py", line 60, in open
return HttpTransport.open(self, request)
File ".../suds/transport/http.py", line 105, in open
fp = self.invoke(request, retfile=True)
File ".../suds/transport/http.py", line 153, in invoke
u2response = urlopener.open(u2request, timeout=tm)
File "/usr/lib/python2.7/urllib2.py", line 429, in open
response = self._open(req, data)
File "/usr/lib/python2.7/urllib2.py", line 447, in _open
'_open', req)
File "/usr/lib/python2.7/urllib2.py", line 407, in _call_chain
result = func(*args)
File "/usr/lib/python2.7/urllib2.py", line 1228, in http_open
return self.do_open(httplib.HTTPConnection, req)
File "/usr/lib/python2.7/urllib2.py", line 1201, in do_open
r = h.getresponse(buffering=True)
File "/usr/lib/python2.7/httplib.py", line 1136, in getresponse
response.begin()
File "/usr/lib/python2.7/httplib.py", line 453, in begin
version, status, reason = self._read_status()
File "/usr/lib/python2.7/httplib.py", line 417, in _read_status
raise BadStatusLine(line)
httplib.BadStatusLine: ''
client.service.login()
:
- 私は泡クライアントライブラリによって取り出されます
Client(url)
に提供URL - sudsは結果を解析します。最初のwsdl内の他のwsdlの場所を発見します
- sudsは最初のwsdlにあるURLにアクセスして他のwsdlファイルを取得したいと考えています。
- これらのURLは壊れています。それらは間違ったプロトコルを含んでいます:httpsの代わりにhttp。
- 泡HTTPSサーバがクライアント側で通信
- を停止し、HTTPSサーバ
- にHTTPを話ししようとすると、私は次を参照してください。BadStatusLine
しかし、どのようにこの問題を回避するには?私はクライアントにしかアクセスできません。だからこそ私は解決策ではなく「回避策」を求めています:-)