我使用PyQt4开发了一个桌面客户端,它通过requests lib连接到我的Web服务。你知道,requests可能是最有用的http客户端之一,我认为应该没问题。我的桌面客户端工作正常,直到发生奇怪的事情。
我使用以下代码向我的服务器发送请求。
response = requests.get(url, headers = self.getHeaders(), timeout=600, proxies = {}, verify = False)
其中header仅包含auth令牌。
def getHeaders(self, additional = None):
headers = {
'Auth-Token' : HttpBasicClient.UserAuthToken,
}
if additional is not None:
headers.update(additional)
return headers
我无法连接到我的网络服务,所有的http请求都弹出相同的错误“'无法连接到代理。',错误(10061,'')”。例如:
GET Url:http:// api.fangcloud.com/api/v1/user/timestamp HTTPSConnectionPool(host ='api.fangcloud.com',port = 443):使用url超出最大重试次数:/ api / v1 / user / timestamp(由ProxyError引起('无法连接到代理。',错误(10061,'' )))
此API除了返回我的服务器的时间戳之外什么都不做。当我将网址复制到具有相同环境的同一台计算机中的Chrome时,它会返回正确的响应。但是,我的桌面客户端只能返回错误。请求lib是否有问题?
我用谷歌搜索了连接错误10061的问题(“由于目标机器主动拒绝它,因此无法建立连接”)。这可能是由Web服务器的TCP连接拒绝引起的。
客户端向服务器发送一个SYN数据包,目标是端口(HTTP为80)。在端口80上运行服务的服务器将使用SYN ACK进行响应,但如果不是,则它将使用RST ACK进行响应。您的客户端到达服务器,但不是预期的服务。这是服务器可以“主动拒绝”连接尝试的一种方式。
但为什么呢?我的客户端之前工作正常,Chrome仍然有效。我的机器上没有代理。我有什么想念吗?
答案 0 :(得分:0)
我注意到URL中有空格,这是正确的吗? 我在ipython中测试了请求..响应是:
{
"timestamp": 1472760770,
"success": true
}
适用于HTTP和HTTPS。