'获取'Java中的REST调用:它何时实际执行?

时间:2015-01-28 18:39:46

标签: java rest get

对于这个'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();
  }

1 个答案:

答案 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