首页   >   代码编程

URLConnection利用VPN代理工具访问外网

项目中使用的是Google的推送服务,今天线上出了问题,本地需要调试,但是做JUnit单元测试的时候,一直都是连接超时,而本机又是开了翻墙代理的,在浏览器中访问Google也都没问题。

起初以为是IDEA需要翻墙才可以,百度查了一下,还真有人提到过这个问题,不过大都是说在线安装插件的时候需要翻墙,貌似和我这个关系不太大,虽然怀疑,但我还是给IDEA配置了HTTP Proxy。

URLConnection利用VPN代理工具访问外网

上图中,红色框起来的两种方式,我都一一做了测试,但是没有一个成功的,依旧都还是SocketTimeoutException了。

继续查阅资料,又看到有人提到说在启动项目的时候指定VM Options

-DproxySet=true
-Dhttp.proxyHost=127.0.0.1
-Dhttp.proxyPort=1080
-Dhttps.proxyHost=127.0.0.1
-Dhttps.proxyPort=1080

但依旧还是不行,神他妈烦,只能继续查阅资料,无意中看到一篇博客中提到java http proxy,让我瞬间醒悟过来,好像自己一直都找偏了方向。。。

private String httpProxy() {
    try {
        // 创建代理服务器,映射到本地ShadowSockets工具的代理端口
        // 本地开的代理端口就是1080
        InetSocketAddress address = new InetSocketAddress("127.0.0.1", 1080);
        Proxy proxy = new Proxy(Proxy.Type.SOCKS, address); // http代理协议类型
        URL url = new URL("http://www.google.com");
        URLConnection conn = url.openConnection(proxy);
        // 如果需要账号密码,需要添加请求头进行验证
        // conn.setRequestProperty(account, pass);
        InputStream is = conn.getInputStream();
        // InputStream is = url.openStream();
        String result = IOUtils.toString(is, "UTF-8");
        System.out.println(result);
        return result;
    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;
}

方向找对了之后,问题立马得到解决!!!

上诉代码中,在打开URLConnection添加一个Proxy就可以进行访问了,非常的简单,哎,如果一早方向找对了,又怎么会浪费我这么久的时间!

QQ群: 686430774  /  718410762

站长Q: 1347384268

如果文章有帮到你,可以考虑请博主喝杯咖啡!

分享到:

欢迎分享本文,转载请注明出处!

作者:不忘初心

发布时间:2019-03-25

永久地址:https://www.jiweichengzhu.com/article/37d467362b634b4d88a26c997a826bcc

评论