2015-02-24 71 views
4

我正在使用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; 
    } 

}

回答

13

請參閱下面的代碼,你會得到關於如何做到這一點的想法。

 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); 

此代碼將測量從開始寫出請求到完成接收響應並顯示結果的時間。

+0

get和post..for我可以粘貼相同的行嗎? – fazilpuriasa 2015-02-24 06:32:36

+0

@fazilpuriasa:是的obvisely ..它會在兩種方法上工作。 – 2015-02-24 06:42:40

+0

是的,我粘貼,你說..運行我的app ..但在logcat沒有顯示像sysout .. – fazilpuriasa 2015-02-24 06:44:04

相關問題