如何在 java 中使用代理获取 URL 连接?

Posted

技术标签:

【中文标题】如何在 java 中使用代理获取 URL 连接?【英文标题】:How to get URL connection using proxy in java? 【发布时间】:2011-11-16 07:19:08 【问题描述】:

我正在尝试在运行时使用代理创建 URL 连接。我的代码如下:

Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("192.0.2.100", 80));
HttpURLConnection connection =
    (HttpURLConnection)new URL("http://abc.example.com").openConnection(proxy);

但这不起作用。有人知道为什么吗?

【问题讨论】:

什么不起作用?您收到 StackTrace 还是错误? 为什么它不起作用?错误是什么? 您使用的是什么类型的代理? 谢谢你们成功了。我需要配置连接请求。连接.setDoOutput(true); connection.setRequestProperty("内容类型", "text/xml"); connection.setRequestProperty("接受", "text/xml, application/xml"); connection.setRequestMethod("POST"); 您可以并且应该发布您的解决方案作为此问题的答案(您可以稍后接受)。 【参考方案1】:

为未来的访客添加答案

Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("192.0.2.100", 80));
HttpURLConnection connection =(HttpURLConnection)new URL("http://abc.example.com").openConnection(proxy);
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setRequestProperty("Content-type", "text/xml");
connection.setRequestProperty("Accept", "text/xml, application/xml");
connection.setRequestMethod("POST");

【讨论】:

谢谢@dku.rajkumar,我如何在这里设置用户名和密码?【参考方案2】:

dku.rajkumar 的方法对我不起作用。

我试试这个,它工作。但这需要双倍的时间。

Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("192.0.2.100", 80));

    HttpURLConnection connection =
        (HttpURLConnection)new URL("http://abc.example.com").openConnection(proxy);
    ((HttpURLConnection)new URL("http://abc.example.com").openConnection(proxy)).getInputStream();

System.out.println(connection.usingProxy());

结果为真

没有 ((HttpURLConnection)new URL("http://abc.example.com").openConnection(proxy)).getInputStream();

结果为假

【讨论】:

以上是关于如何在 java 中使用代理获取 URL 连接?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 svn 配置 HTTP 代理

在 java 中,如何查找连接为获取 URL 的所有部分而发出的请求数?

Java如何查找系统的代理设置?

如何为炮兵负载测试设置代理 url?

代理(如 squid)如何知道连接是不是使用 http?

如何在python中编写代理池服务器(请求来时,选择代理获取url内容)?