Кто-нибудь комбинировал 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, которая хорошо работает со сложными прокси.