Установить useragent на клиенте __init__ (Python suds) - PullRequest
1 голос
/ 15 марта 2012

Я хотел бы знать, как установить useragent во всех SOAP-запросах с suds в Python, включая WSDL get. Действительно, по следующему коду: Клиент ( 'HTTP: // ...') WSDL - это стандартный пользовательский Python-агент.

WSDL доступен на сервере только для конкретного пользователя.

Спасибо

Ответы [ 2 ]

2 голосов
/ 15 марта 2012

Я не знаю, является ли это самым простым способом сделать это, но это, безусловно, возможно сделать с помощью httplib2 (этот трюк также дает вам поддерживать соединения):необходимо передать транспортный класс в suds.client:

http = Httplib2Transport()
client = Client(url,transport=http)
0 голосов
/ 27 июля 2015

Вы можете переопределить метод u2opener класса Transport, чтобы установить собственный атрибут addheaders:

class HttpTransportCustomUserAgent(HttpTransport):

    def __init__(self, **kwargs):
        self.user_agent = kwargs.get('user_agent', 'Python-urllib/%s' % urllib2.__version__)
        if 'user_agent' in kwargs:
            del(kwargs['user_agent'])
        HttpTransport.__init__(self, **kwargs)

    def u2opener(self):
        """
        Create a urllib opener.
        @return: An opener.
        @rtype: I{OpenerDirector}
        """
        if self.urlopener is None:
            result = urllib2.build_opener(*self.u2handlers())
            result.addheaders = [('User-agent', self.user_agent)]
            return result
        else:
            return self.urlopener

Теперь вы можете использовать этот новый класс транспортеров для suds.client:

http = HttpTransportCustomUserAgent(user_agent='My custom User Agent')
client = Client(url, transport=http)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...