在java中设置代理,URL与System.setProperty?

时间:2009-09-03 15:03:47

标签: java proxy

我制作了一个从互联网获得响应时间的Java应用程序。我在代理服务器后面工作,现在我遇到了这个我无法弄清楚的问题,这里有一段我​​的代码

URL website = new URL("http", proxy, Integer.parseInt(proxyPort), websiteUrl)
BufferedReader in = new BufferedReader(new InputStreamReader(website.openStream()));
long start = System.currentTimeMillis();
while ((in.readLine()) != null){}
long elapsedTimeMillis = System.currentTimeMillis()-start;

Vs的

URL website = new URL(websiteUrl);
System.setProperty("http.proxyHost", proxy);
System.setProperty("http.proxyPort", proxyPort);
BufferedReader in = new BufferedReader(new InputStreamReader(website.openStream()));
long start = System.currentTimeMillis();
while ((in.readLine()) != null){}
long elapsedTimeMillis = System.currentTimeMillis()-start;

当我使用

URL website = new URL(websiteUrl);
System.setProperty("http.proxyHost", proxy);
System.setProperty("http.proxyPort", proxyPort);

我的平均响应时间为0.064

当我使用

URL website = new URL("http", proxy, Integer.parseInt(proxyPort), websiteUrl)

我获得了更高的响应时间0.219。我怎么知道哪一个给我一个准确的时间?

2 个答案:

答案 0 :(得分:3)

在第一种情况下,检查Javadoc表单中用于实例化URL的构造函数,它没有按照您的意愿执行:

URL(String protocol, String host, int port, String file)
Creates a URL object from the specified protocol, host, port number, and file.

在第二种情况下,您通过代理呼叫您的网站,在第一种情况下,您将代理作为Web服务器调用,类似

http://proxyhost:3128/http://mysite.com/index.html

...响应不是你所期望的,你留在你的局域网中,因此时间非常不同。

答案 1 :(得分:0)

第一个版本实际使用代理。它正在向代理服务器发出HTTP请求。我建议再次运行测试,但查看HTTP响应代码并检查URL的InputStream的实际输出,以查看您获得的响应。