您现在的位置是:网站首页 > 代码编程 > JAVA开发JAVA开发

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

不忘初心 不忘初心 2019-03-25 围观() 评论() 点赞() JAVA开发

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

项目中使用的是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就可以进行访问了,非常的简单,哎,如果一早方向找对了,又怎么会浪费我这么久的时间!

javaproxyhttp proxyvpn

看完文章,有任何疑问,请加入群聊一起交流!!!

很赞哦! ()

文章评论

  • 请先说点什么
    人参与,条评论

请使用电脑浏览器访问本页面,使用手机浏览器访问本页面会导致下载文件异常!!!

雨落无影

关注上方公众号,回复关键字【下载】获取下载码

用完即删,每次下载需重新获取下载码

若出现下载不了的情况,请及时联系站长进行解决

站点信息

  • 网站程序:spring + freemarker
  • 主题模板:《今夕何夕》
  • 文章统计:篇文章
  • 标签管理标签云
  • 微信公众号:扫描二维码,关注我们