【问题标题】:Python 3.51 Requests causes Proxy ErrorPython 3.51 请求导致代理错误
【发布时间】:2016-10-19 17:12:35
【问题描述】:

我正在尝试使用 Python (3.51) 请求使用 Informatica Cloud REST API(请求包版本为 2.10.0):

import requests

username='myuser'
password='mypassword'

genheaders = {
    'Content-Type': 'application/json',
}

data = '{"@type":"login","username":"' + username + '","password":"' + password +'"}'
response = requests.post('https://app.informaticaondemand.com/ma/api/v2/user/login', headers=genheaders, data=data)

在我的本地机器上,一切都很好。但是,在我的 TEST 服务器上,我收到以下错误:

HTTPSConnectionPool(host='app.informaticaondemand.com', port=443):最大重试次数超出了 url:/ma/api/v2/user/login(由 ProxyError('Cannot connect to proxy.', NewConnectionError (': 建立新连接失败: [WinError 10060] 连接尝试失败,因为连接方一段时间后没有正确响应,或者连接失败,因为连接的主机没有响应',))

令人讨厌的是,curl 在服务器机器上运行良好:

curl -H "Content -Type: application/json" -X POST --data @Login.txt   https://app.informaticaondemand.com/ma/api/v2/user/login -k

login.txt 所在的位置:

{ "@type": "login","username":"myuser", "password":"mypassword"}

如果我不使用 -k 开关,我会得到:

curl: (60) SSL 证书问题,验证 CA 证书是否正常。详细信息:错误:14090086:SSLroutines:SSL3_GET_SERVER_CERTIFICATE:证书验证失败 更多细节在这里:http://curl.haxx.se/docs/sslcerts.html

使用 -k 开关一切正常。

在执行 Python.exe 之前,我尝试通过环境变量设置代理:

set HTTP_PROXY=10.123.123.10:8080
set HTTPS_PROXY=10.123.123.10:8080

但结果是一样的。

对接下来要尝试什么有什么想法吗?

【问题讨论】:

    标签: python proxy python-requests


    【解决方案1】:

    不妨试试以下方法:

    import requests
    
    proxies = {
      'http': 'http://10.123.123.10:8080',
      'https': '10.123.123.10:8080',
    }
    
    response = requests.post('https://app.informaticaondemand.com/ma/api/v2/user/login', headers=genheaders, data=data, proxies=proxies)
    

    请求代理文档的链接: http://docs.python-requests.org/en/master/user/advanced/#proxies

    【讨论】:

      猜你喜欢
      • 2018-01-08
      • 2021-12-23
      • 1970-01-01
      • 2013-11-01
      • 2021-03-05
      • 2012-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多