Android检查post请求的速度

Android检查post请求的速度,android,android-asynctask,Android,Android Asynctask,我试图检查Post请求执行的速度。我正在异步任务中执行请求 这就是我目前检查执行时间的方式 long start = System.nanoTime(); new POSTTask().execute(); long end = System.nanoTime() - start; 我不确定这段时间是否是Post请求的实际时间。在AsyncTask中,我正在做的唯一事情是 try {

我试图检查Post请求执行的速度。我正在异步任务中执行请求

这就是我目前检查执行时间的方式

            long start = System.nanoTime();
            new POSTTask().execute();
            long end = System.nanoTime() - start;
我不确定这段时间是否是Post请求的实际时间。在AsyncTask中,我正在做的唯一事情是

        try {
            HttpClient httpClient = new DefaultHttpClient();
            HttpPost request = new HttpPost(url);

            List<NameValuePair> postParameters = new ArrayList<>();
            postParameters.add(new BasicNameValuePair("test", "tets1"));

            UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(postParameters);

            request.setEntity(formEntity);
            HttpResponse response = httpClient.execute(request);
            result = EntityUtils.toString(response.getEntity());

            Log.i("Result", result);
        } catch (IOException e) {
            e.printStackTrace();
        }

我这样做是对的还是错的?

不,现在不是实际时间。您正试图在主线程上获取执行时间,但您的post查询正在后台的另一个线程中运行

像这样使用它

try {
        HttpClient httpClient = new DefaultHttpClient();
        HttpPost request = new HttpPost(url);

        List<NameValuePair> postParameters = new ArrayList<>();
        postParameters.add(new BasicNameValuePair("test", "tets1"));

        UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(postParameters);

        request.setEntity(formEntity);
        long start = System.nanoTime();
        HttpResponse response = httpClient.execute(request);
        long end = System.nanoTime() - start;
        // Print value of end here
        result = EntityUtils.toString(response.getEntity());

        Log.i("Result", result);
    } catch (IOException e) {
        e.printStackTrace();
    }
不,这是错误的。AsyncTask上的execute方法在执行请求之前立即返回

如果您将计时代码移动到AsyncTask中,特别是将它放在这一行的周围

        HttpResponse response = httpClient.execute(request);

您将获得实际时间。

这是错误的,因为这些行没有按顺序执行

new POSTTask().execute();
开始一个新的线程,这意味着你的两个时间戳将非常接近,就像毫秒间隔一样,这是不准确的


你应该做什么?所有的时间都在你的背景中

完美,这很有效。我会在8分钟后马上给马克打电话。很高兴我能帮上忙。谢谢!!:Ddo您现在知道async在AsyncTask中意味着什么吗?