我制作了一个从互联网获得响应时间的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。我怎么知道哪一个给我一个准确的时间?
答案 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的实际输出,以查看您获得的响应。