我一直在努力与我的公司代理一起提出https请求。
import requests
from requests.auth import HTTPProxyAuth
proxy_string = 'http://user:password@url_proxt:port_proxy'
s = requests.Session()
s.proxies = {"http": proxy_string , "https": proxy_string}
s.auth = HTTPProxyAuth(user,password)
r = s.get('http://www.google.com') # OK
print(r.text)
r = s.get('https://www.google.com',proxies={"http": proxy_string , "https": proxy_string}) #OK
print(r.text)
r = s.get('https://www.google.com') # KO
print(r.text)
Run Code Online (Sandbox Code Playgroud)
当KO时,我有以下例外情况:
HTTPSConnectionPool(host='www.google.com', port=443): Max retries exceeded with url: / (Caused by ProxyError('Cannot connect to proxy.', OSError('Tunnel connection failed: 407 Proxy Authentication Required',)))
Run Code Online (Sandbox Code Playgroud)
我在网上看了一下,但没有发现有人遇到HTTPS的特定问题。
感谢您的时间
免责声明:我来自 C# 世界,所以这个问题可能会因我以前的经验而产生偏见
我有一个初始化日志记录的方法。如果失败,则应用程序的其余部分不应运行,因为对 logger 的任何调用都将抛出 NullPointerException。
今天,我的代码正在捕获异常并通过 System.err 打印错误日志。对我来说,这是一个错误,它应该让异常传播直到它杀死应用程序。
所以我开始删除 try catch 并且我突然收到编译器的抱怨说我应该在调用此方法的整个堆栈上声明我的异常。
我理解它背后的逻辑,并且过去认为它很实用:你知道这种方法是如何失败的。
但是,就责任分离而言,这对我来说听起来并不正确。我不希望上层意识到这种潜在的 IOException 失败,这是一种非常特殊的行为,例如 main 方法不应该知道。而且,如果我们推动这个逻辑,这意味着:
我是否遗漏了什么,或者这是有意的异常设计?