在 android 上使用 AsyncTask 进行 HTTP GET 会导致发送数据的长时间延迟

Using AsyncTask for an HTTP GET on android causes a long delay in sending data

我正在使用 AsyncTask 在 android 上执行 HTTP GET。它导致我的数据发送到 URL 的时间很长。有没有办法解决这个问题或可以使用其他方法?

这是我的代码: class RequestTask 扩展了 AsyncTask{

    @Override
    protected String doInBackground(String... uri) {
        HttpClient httpclient = new DefaultHttpClient();
        HttpResponse response;
        String responseString = null;

        HttpParams httpParameters = httpclient.getParams();
        HttpConnectionParams.setTcpNoDelay(httpParameters, true);

        try {
            response = httpclient.execute(new HttpGet(uri[0]));
            StatusLine statusLine = response.getStatusLine();
            if(statusLine.getStatusCode() == HttpStatus.SC_OK){
                ByteArrayOutputStream out = new ByteArrayOutputStream();
                response.getEntity().writeTo(out);
                responseString = out.toString();
                out.close();
            } else{
                //Closes the connection.
                response.getEntity().getContent().close();
                throw new IOException(statusLine.getReasonPhrase());
            }
        } catch (ClientProtocolException e) {
            //TODO Handle problems..
        } catch (IOException e) {
            //TODO Handle problems..
        }
        return responseString;
    }

    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);
        //Do anything with response..
    }
}

电话是这样的:

new RequestTask().execute("http://10.10.10.211:9081/?modelname=model1&sourcedata=" + values[1]);

这不一定是您问题的答案,但我真的建议使用 Retrofit 从 Android 进行 REST 调用(与 RxJava 一起使用效果更好)。在任何一种情况下,您都不应该因为在后台线程中发出请求而看到太多延迟。

除了网络问题,我想不出任何延迟的原因!

处理Http网络调用很痛苦,需要做很多工作来处理,但是,为什么要重新造轮子?!

有些图书馆确实为我们处理了所有杂乱的事情,请使用其中一个。

我在我的项目中使用了 OKHTTP,它非常好。

This 是 CommonsWare 的回答,

请去读一读,它会很有帮助。

我建议您使用 Volley 这种方法。我在我的项目中使用它,我从来没有遇到过任何问题。