【问题标题】:Python requests returns “cannot connect to proxy & error 10061”Python 请求返回“无法连接到代理和错误 10061”
【发布时间】:2017-01-06 13:29:23
【问题描述】:

我使用 PyQt4 开发了一个桌面客户端,它通过requests lib 连接到我的 Web 服务。你知道,requests 可能是最有用的 http 客户端之一,我想应该没问题。我的桌面客户端工作正常,直到发生奇怪的事情。

我使用以下代码向我的服务器发送请求。

response = requests.get(url, headers = self.getHeaders(), timeout=600, proxies = {}, verify = False)

其中标头仅包含身份验证令牌。

 def getHeaders(self, additional = None):
    headers = {
               'Auth-Token' : HttpBasicClient.UserAuthToken,
               }
    if additional is not None:
        headers.update(additional)
    return headers

我无法连接到我的网络服务,所有的 http 请求都弹出相同的错误“'无法连接到代理。',错误(10061,'')”。例如:

获取网址:http://api.fangcloud.com/api/v1/user/timestamp HTTPSConnectionPool(host='api.fangcloud.com', port=443): 最大重试次数超过 url: /api/v1/user/timestamp (由 ProxyError('Cannot connect to proxy.', error(10061, '' )))

这个 API 只返回我服务器的时间戳。当我将 url 复制到具有相同环境的同一台机器上的 Chrome 中时,它会返回正确的响应。但是,我的桌面客户端只能返回错误。请求库有什么问题吗?

我搜索了这个连接错误 10061 的问题(“无法建立连接,因为目标机器主动拒绝了它”)。这可能是由于 Web 服务器的 TCP 连接拒绝造成的。

客户端向服务器发送一个 SYN 数据包,目标是端口(HTTP 为 80)。在端口 80 上运行服务的服务器将以 SYN ACK 响应,但如果不是,它将以 RST ACK 响应。您的客户端到达服务器,但没有到达预期的服务。这是服务器“主动拒绝”连接尝试的一种方式。

但是为什么呢?我的客户端以前可以正常工作,Chrome 仍然可以工作。我的机器上没有使用代理。有什么我想念的吗?

【问题讨论】:

  • 分享python代码
  • 主要 10061 来自操作系统(不是 Python)——但您提到的 api 在浏览器中运行良好是值得研究的。您是否使用同一系统对其进行了测试?和相同的请求参数?
  • 是的,我使用 Postman(Chrome 的 http 客户端插件),填写相同的参数,它也可以正常工作。这是因为操作系统的安全策略吗?
  • 您是否使用任何代理?如果不尝试不使用空代理 = {} 参数,也可以使用 urlib2 尝试 - 解决问题

标签: python tcp connection python-requests


【解决方案1】:

我注意到 URL 中有一个空格,对吗? 我在我的 ipython 中使用请求进行了测试.. 响应是:

{
   "timestamp": 1472760770,
   "success": true
}

对于 HTTP 和 HTTPS。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多