Кто-нибудь комбинировал soap.py или пена с python-ntlm?
Я хотел бы заменить текущий (плохо сломанный и грубый) cURL-based (cURL
3 ответов
suds был основные поддерживать его с 0.3.8.
источники python-suds-0.3.9\suds\transport\https.py говорит:
class WindowsHttpAuthenticated(HttpAuthenticated):
"""
Provides Windows (NTLM) http authentication.
@ivar pm: The password manager.
@ivar handler: The authentication handler.
"""
def u2handlers(self):
# try to import ntlm support
try:
from ntlm import HTTPNtlmAuthHandler
except ImportError:
raise Exception("Cannot import python-ntlm module")
handlers = HttpTransport.u2handlers(self)
handlers.append(HTTPNtlmAuthHandler.HTTPNtlmAuthHandler(self.pm))
return handlers
попробуйте со следующим фрагментом, как описано здесь:
from suds.transport.https import WindowsHttpAuthenticated
ntlm = WindowsHttpAuthenticated(username='xx', password='xx')
client = Client(url, transport=ntlm)
другим подходом было бы вызвать команду curl во время исключений soap, а затем инициировать повторную попытку.
что-то вроде...
curl -x websenseproxy:8080 --ntlm -U domain\user:password --insecure https://blah.com/prod/webservice.asmx?WSDL
#insecure
используется для самозаверяющих сертификатов
вы можете использовать CNTLM как локальную прокси-службу, которая будет обрабатывать все вызовы проверки подлинности NTLM. Затем вы просто ссылаетесь на локальный прокси-сервер CNTLM IP и порт без аутентификации с помощью soapy или urllib2... все, что угодно.
Я еще не нашел библиотеку python, которая хорошо работает со сложными прокси.