对于这个'Get'REST调用,我想知道我是否可以获得HTTP请求实际执行时的延迟,没有别的。我很确定当我调用'openConnection()'时我没有启动它,因为我没有设置请求方法/属性的属性,直到那之后,我在设置请求方法/属性之前就已经拥有了我的startTime但我不知道我的HTTP请求是否执行,直到我从输入流中得到结果。任何澄清,我将不胜感激。
try {
URL url = new URL("http://localhost:8080/REST/json/product/get");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
startTime = System.nanoTime();
conn.setRequestMethod("GET");
conn.setRequestProperty("Accept", "application/json");
BufferedReader br = new BufferedReader(new InputStreamReader((connection.getInputStream())));
endTime = System.nanoTime();
duration = (endTime - startTime);
System.out.println(duration);
String output;
System.out.println("Output from Server ...");
while ((output = br.readLine()) != null) {
System.out.println(output);
}
conn.disconnect();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
答案 0 :(得分:2)
我认为最好在调用connection.getInputStream()
之前设置开始时间,只有在此行与服务器建立实际连接后才会生效。
startTime = System.nanoTime();
BufferedReader br = new BufferedReader(new InputStreamReader((connection.getInputStream())));
endTime = System.nanoTime();
以下行不会启动连接过程,只需设置连接的属性(方法,数据类型)
conn.setRequestMethod("GET");
conn.setRequestProperty("Accept", "application/json");
有关详情: - HttpURLConnection