Форум сайта python.su
0
Отправляю SOAP запрос на WCF сервис с помощью такого кода
from suds.client import Client import ssl ssl._create_default_https_context = ssl._create_unverified_context SB_PRIVATE_ACCESS = {"PATH":"HTTPS-SERVER",} client = Client(SB_PRIVATE_ACCESS['PATH']) print client response = client.service.GetCountryList(token='{KEY}',version='1.0') print response
Офлайн
3
Suds стандартный используется? У меня стандартный тоже выдавал непонятные ошибки. Попробуй suds-jurko - форк, вроде он поновее, с ним все заработало, даже никакие https_context не пришлось прописывать.
Офлайн
0
Попробовал (( не выходит пишит туже ошибку
Отредактировано Jeck290 (Июнь 2, 2015 21:12:03)
Офлайн
3
Лог бы полный ошибки глянуть.
Офлайн
0
DEBUG:suds.client:sending to (http://SERVER/AMLService/SearchService.svc) message: <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:ns0="http://hompouri.org/" xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header/> <ns1:Body> <ns0:GetCountryList> <ns0:token>KEY</ns0:token> <ns0:version>1.0</ns0:version> </ns0:GetCountryList> </ns1:Body> </SOAP-ENV:Envelope> DEBUG:suds.client:headers = {'SOAPAction': '"http://hompouri.org/ISearchService/GetCountryList"', 'Content-Type': 'text/xml; charset=utf-8'} DEBUG:suds.transport.http:sending: URL: http://SERVER/AMLService/SearchService.svc HEADERS: {'SOAPAction': '"http://hompouri.org/ISearchService/GetCountryList"', 'Content-Type': 'text/xml; charset=utf-8', 'Content-type': 'text/xml; charset=utf-8', 'Soapaction': '"http://hompouri.org/ISearchService/GetCountryList"'} MESSAGE: <?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope xmlns:ns0="http://hompouri.org/" xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header/><ns1:Body><ns0:GetCountryList><ns0:token>KEY</ns0:token><ns0:version>1.0</ns0:version></ns0:GetCountryList></ns1:Body></SOAP-ENV:Envelope> Traceback (most recent call last): File "C:/Users/Dev01/Downloads/TEST/2.py", line 42, in <module> response = client.service.GetCountryList(token='KEY',version='1.0') File "C:\Python27\lib\site-packages\suds\client.py", line 521, in __call__ return client.invoke(args, kwargs) File "C:\Python27\lib\site-packages\suds\client.py", line 581, in invoke result = self.send(soapenv) File "C:\Python27\lib\site-packages\suds\client.py", line 613, in send reply = self.options.transport.send(request) File "C:\Python27\lib\site-packages\suds\transport\https.py", line 66, in send return HttpTransport.send(self, request) File "C:\Python27\lib\site-packages\suds\transport\http.py", line 82, in send fp = self.u2open(u2request) File "C:\Python27\lib\site-packages\suds\transport\http.py", line 132, in u2open return url.open(u2request, timeout=tm) File "C:\Python27\lib\urllib2.py", line 437, in open response = meth(req, response) File "C:\Python27\lib\urllib2.py", line 550, in http_response 'http', request, response, code, msg, hdrs) File "C:\Python27\lib\urllib2.py", line 469, in error result = self._call_chain(*args) File "C:\Python27\lib\urllib2.py", line 409, in _call_chain result = func(*args) File "C:\Python27\lib\urllib2.py", line 653, in http_error_302 fp.read() File "C:\Python27\lib\socket.py", line 355, in read data = self._sock.recv(rbufsize) File "C:\Python27\lib\httplib.py", line 612, in read s = self.fp.read(amt) File "C:\Python27\lib\socket.py", line 384, in read data = self._sock.recv(left) socket.error: [Errno 10054] An existing connection was forcibly closed by the remote host
Офлайн
0
Походу нужен wsHttpBinding а библиотеки для питона его не поддерживают :|
Офлайн
3
Хм, вот эта строчка наводит на кое-какие мысли:
File "C:\Python27\lib\urllib2.py", line 653, in http_error_302
. Конечно используется urlib2, но возможно urllib3 обновила какую-нибудь другую зависимость.Офлайн
0
Спасибо еще раз твое наблюдение навело на одну ссылку которая помогла мне , может кому интересно будет
http://stackoverflow.com/questions/2388046/can-you-help-me-solve-this-suds-soap-issueпроблема была в ссылке доступа нужно было выставить https в location='https://www.clarityaccounting.com/api/v1' и все пошло вместо http
Офлайн
3
Пожалуйста)
Jeck290Интересно, возьмем на заметку.
проблема была в ссылке доступа нужно было выставить https в location='https://www.clarityaccounting.com/api/v1' и все пошло вместо http
Офлайн
0
Рано радовался )) возникла еще одна проблема, нужно вызвать приложение с одним из типов данных
ArrayOfString = client.factory.create('ns0:ArrayOfSearchPersonSimpleContract')
suds.WebFault: Server raised fault: 'Object reference not set to an instance of an object.'
Офлайн