如何测量服务器的请求和响应时间?

8

我正在使用asynctask和json解析来从服务器获取响应。如何测量请求和响应时间,以下是我的Web服务代码,请问有人可以帮我吗?............................

public class JSONParser {
  static InputStream is = null;
  static JSONObject jObj = null;
  static String json = "";

  // constructor
  public JSONParser() {
  }

  // function get json from url
    // by making HTTP POST or GET method
  public JSONObject makeHttpRequest(String url, String method,
          List<NameValuePair> params) {

      // Making HTTP request
      try {
        // check for request method
          if(method.equals("POST")){
              DefaultHttpClient httpClient = new DefaultHttpClient();
              HttpPost httpPost = new HttpPost(url);
              httpPost.setEntity(new UrlEncodedFormEntity(params));
              long startTime = System.currentTimeMillis();
              HttpResponse httpResponse = httpClient.execute(httpPost);
              HttpEntity httpEntity = httpResponse.getEntity();
             is = httpEntity.getContent();
             long elapsedTime = System.currentTimeMillis() - startTime;
                System.out.println("Total elapsed http request/response time in milliseconds: " + elapsedTime);
          } else if(method.equals("GET")) {
              //request method is GET
              DefaultHttpClient httpClient = new DefaultHttpClient();
              String paramString = URLEncodedUtils.format(params, "utf-8");
              url += "?" + paramString;
              HttpGet httpGet = new HttpGet(url);
              long startTime = System.currentTimeMillis();
              HttpResponse httpResponse = httpClient.execute(httpGet);
              HttpEntity httpEntity = httpResponse.getEntity();
              is = httpEntity.getContent();
              long elapsedTime = System.currentTimeMillis() - startTime;
                System.out.println("Total elapsed http request/response time in milliseconds: " + elapsedTime);
          }
      }catch (UnsupportedEncodingException e) {
          e.printStackTrace();
      }catch (ClientProtocolException e) {
          e.printStackTrace ();
      }catch (IOException e) {
          e.printStackTrace();
      }

      try {
          BufferedReader reader = new BufferedReader(new InputStreamReader(
          is, "iso-8859-1"),8);
          StringBuilder sb = new StringBuilder();
          String line = null;
          while ((line = reader.readLine()) != null) {
          sb.append(line + "\n");
          }
          is.close();
          json = sb.toString();
          Log.d("Request attempt","JSON >>>" +  json.toString());
          } catch (Exception e) {
          Log.e("Buffer Error", "Error converting result" + e.toString());
          }
    // try parse the string to a JSON object
      try { jObj = new JSONObject(json);
      } catch (JSONException e) {
          Log.e("JSON PArser", "Error Parsing data" + e.toString());
      }
      return jObj;
  }

}

1个回答

19
请看下方代码,您将会了解如何完成此操作。
      long startTime = System.currentTimeMillis();

         //Write this above before your httprequest 

              HttpResponse httpResponse = httpClient.execute(httpGet);
              HttpEntity httpEntity = httpResponse.getEntity();
              is = httpEntity.getContent();    

        //After you get response  

        long elapsedTime = System.currentTimeMillis() - startTime;
        System.out.println("Total elapsed http request/response time in milliseconds: " + elapsedTime);

这段代码将测量从您开始编写请求到接收响应完成的时间,并显示结果。


在get和post中,我可以粘贴相同的行吗? - fazilpuriasa
是的,我按照你说的粘贴了代码,并运行了我的应用程序,但在日志中没有显示任何类似于sysout的内容。 - fazilpuriasa
我接受并点赞了。谢谢,它起作用了。它显示1688,那是什么意思? - fazilpuriasa
我没听懂你说什么了..什么? - fazilpuriasa
你能帮我解决这个问题吗?https://dev59.com/HIjca4cB1Zd3GeqP07xf - fazilpuriasa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接