自动获取代理

时间:2017-10-25 19:35:14

标签: java proxy

我有以下HttpConnection调用来获取和解析json对象。

如您所见,我在代码中传递proxy,如下所示。 但是,我需要知道如何在不手动传递proxy的情况下获取proxy= new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyString, 80)); HttpURLConnection dataURLConnection = endURL.openConnection(proxy); dataURLConnection .setRequestProperty ("Authorization", token); dataURLConnection .setRequestMethod("GET"); InputStream response = dataURLConnection .getInputStream(); BufferedReader reader = new BufferedReader (new InputStreamReader(response));

arr = [{:question_type=>"Fire", :total=>0.0}, {:question_type=>"Water", :total=>0.0}, {:question_type=>"Metal", :total=>0.0}, {:question_type=>"Earth", :total=>0.0}, {:question_type=>"Wood", :total=>100.0}]

2 个答案:

答案 0 :(得分:1)

我相信你正在寻找java.net.ProxySelector类,因为1.5。

以下是它的功能示例;

URI targetURI = new URI("http://stackoverflow.com/");
ProxySelector proxySelector = ProxySelector.getDefault();
List<Proxy> proxies = proxySelector.select(targetURI);

for(Proxy proxy : proxies) {
    Proxy.Type proxyType = proxy.type(); //Will return a Proxy.Type (SOCKS, for example)
    SocketAddress address = proxy.address(); //Returns null if no proxy is available
}

编辑:刚刚意识到你已经在使用Proxy类了,所以你当然可以直接在HttpURLConnection中使用其中一个结果代理。

答案 1 :(得分:0)

您可以在jvm系统属性上设置代理主机和端口,这样您就不必在创建新连接时创建并传递代理。

System.setProperty("https.proxyHost", "myproxy.com");
System.setProperty("https.proxyPort", "8080");
System.setProperty("http.proxyHost", "myproxy.com");
System.setProperty("http.proxyPort", "8080");

但是,请记住,一旦设置了代理,这将影响JVM上的所有新连接。如果您使用的是Spring或其他框架,他们可能会为您提供上下文设置代理的选项。