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

在java中设置代理,URL vs System.setProperty?,java,proxy,Java,Proxy,我制作了一个java应用程序,可以从互联网上获得响应时间。我在一个代理后面工作,现在我有一个我无法解决的问题,下面是我的代码片段 URL website = new URL("http", proxy, Integer.parseInt(proxyPort), websiteUrl) BufferedReader in = new BufferedReader(new InputStreamReader(website.openStream())); long start = System.cu

我制作了一个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);
我的平均响应时间为0.064

当我使用

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

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

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

检查您用于实例化URL的构造函数的Javadoc表单。在第一种情况下,它没有做您想要的事情:

URL(String protocol, String host, int port, String file) Creates a URL object from the specified protocol, host, port number, and file. URL(字符串协议、字符串主机、int端口、字符串文件) 从指定的协议、主机、端口号和文件创建URL对象。 在第二种情况下,您通过代理调用您的网站,在第一种情况下,您将代理作为web服务器调用,类似于

http://proxyhost:3128/http://mysite.com/index.html http://proxyhost:3128/http://mysite.com/index.html 。。。响应不是您期望的,并且您停留在LAN中,因此时间非常不同

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