В настоящее время я пытаюсь отправить запрос XMLRPC на удаленный сервер, но не могу устранить возникающую ошибку.
Мне нужен запрос XMLRPC, чтобы его можно было запустить с использованием прокси-сервера моей компании, поэтому я обратился к документации и попытался реализовать их предложение для решения этой ситуации:
import http.client
import xmlrpc.client
class ProxiedTransport(xmlrpc.client.Transport):
def set_proxy(self, host, port=None, headers=None):
self.proxy = host, port
self.proxy_headers = headers
def make_connection(self, host):
connection = http.client.HTTPConnection(*self.proxy)
connection.set_tunnel(host, headers=self.proxy_headers)
self._connection = host, connection
return connection
transport = ProxiedTransport()
transport.set_proxy('http://company.net', port = XXXX)
server = xmlrpc.client.ServerProxy('http://betty.userland.com', transport=transport)
server.system.listMethods()
В приведенном выше примере я ввел фиктивные входные данные в .set_proxy и xmlrpc.client.ServerProxy.
Когда я запускаю этот код или любой другой код XMLRPC из-за прокси-сервера компании, я сталкиваюсь со следующей ошибкой:
Traceback (most recent call last):
File "<ipython-input-21-94e0b846ed28>", line 1, in <module>
server.system.listMethods()
File "C:\Users\XXX\AppData\Local\Continuum\anaconda3\lib\xmlrpc\client.py", line 1112, in __call__
return self.__send(self.__name, args)
File "C:\Users\XXX\AppData\Local\Continuum\anaconda3\lib\xmlrpc\client.py", line 1452, in __request
verbose=self.__verbose
File "C:\Users\XXX\AppData\Local\Continuum\anaconda3\lib\xmlrpc\client.py", line 1154, in request
return self.single_request(host, handler, request_body, verbose)
File "C:\Users\XXX\AppData\Local\Continuum\anaconda3\lib\xmlrpc\client.py", line 1166, in single_request
http_conn = self.send_request(host, handler, request_body, verbose)
File "C:\Users\XXX\AppData\Local\Continuum\anaconda3\lib\xmlrpc\client.py", line 1279, in send_request
self.send_content(connection, request_body)
File "C:\Users\XXX\AppData\Local\Continuum\anaconda3\lib\xmlrpc\client.py", line 1309, in send_content
connection.endheaders(request_body)
File "C:\Users\XXX\AppData\Local\Continuum\anaconda3\lib\http\client.py", line 1224, in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)
File "C:\Users\XXX\AppData\Local\Continuum\anaconda3\lib\http\client.py", line 1016, in _send_output
self.send(msg)
File "C:\Users\XXX\AppData\Local\Continuum\anaconda3\lib\http\client.py", line 956, in send
self.connect()
File "C:\Users\XXX\AppData\Local\Continuum\anaconda3\lib\http\client.py", line 928, in connect
(self.host,self.port), self.timeout, self.source_address)
File "C:\Users\XXX\AppData\Local\Continuum\anaconda3\lib\socket.py", line 707, in create_connection
for res in getaddrinfo(host, port, 0, SOCK_STREAM):
File "C:\Users\XXX\AppData\Local\Continuum\anaconda3\lib\socket.py", line 748, in getaddrinfo
for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
gaierror: [Errno 11001] getaddrinfo failed
В документации не содержится справки о том, какрешить эту проблему, из-за которой эту проблему трудно решить.
Из исследования ошибки 'gaierror: [Errno 11001]' в Интернете я обнаружил ряд постов, в которых обсуждается, что это связано с конфигурациями сокетов., но я не понимаю, как изменить их в контексте этого запроса XMLRPC.У кого-нибудь есть предложения относительно того, как исправить / устранить проблему?