【Java】HttpClient使用代理访问网络
在开发过程用,程序可能需要向国外网站发送请求响应,但由于某些原因,我们无法正常访问,这时我们需要代理上网,但如果只开启在系统开启
纸飞机R
,程序依然不能正常访问,在网上查阅相关资料后,得知有两种方式去实现:一是在 IDE 上设置代理,这种仅适用于,在程序开发时无法访问,而程序最终运行环境(境外服务器)能够正常访问的情况;二是将代理上网写在程序中,这样程序最终运行环境不能正常访问也可以,而我是第二种情况。
我使用的是 Apache 的 HttpClient 类和 纸飞机R
,尝试过 System.setProperty("proxyHost", "127.0.0.1");System.setProperty("proxyPort", "1080");
似乎不起作用,查阅到参考文章后,发现博主也有与我类似的情况,最后使用 RoutePlanner类
成功代理上网。
# 实际操作
# 开启纸飞机 R
具体操作,网上很多,就不再赘述了,能够正常代理上网即可
# 设置代理服务器
纸飞机 R 默认已经开启 1080 端的代理服务器,如有特殊需要,可以在 选项设置
里设置
# Java 代码
正常使用 HttpClient 类时,应该如下开头
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet(url);
//...
如果需要用代理上网则需要 CloseableHttpClient httpclient = HttpClients.createDefault();
注释掉或删除
HttpHost proxy = new HttpHost("127.0.0.1", 1080, "HTTP");
DefaultProxyRoutePlanner routePlanner = new DefaultProxyRoutePlanner(proxy);
CloseableHttpClient httpclient = HttpClients.custom()
.setRoutePlanner(routePlanner)
.build();
//改为上方代码
HttpGet httpGet = new HttpGet(url);
//...
注意:代理 https 也是使用
HttpHost proxy = new HttpHost("127.0.0.1", 1080, "HTTP");
,而无需将HTTP
改成HTTPS
上次更新: 2024/03/11, 22:37:05