我有以下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}]
答案 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或其他框架,他们可能会为您提供上下文设置代理的选项。