Android-没有得到HttpResponse的完整回复

时间:2013-11-17 20:59:51

标签: android get android-asynctask httpresponse

我正在尝试在xml中获取HttpResponse,但我没有得到整个响应,可能的是,如果我循环请求,响应在不同的部分结束,但永远不会满。

我使用相同的代码来请求来自不同网址的内容,但我只遇到一个问题。

以下是AsyncTask的代码:

public class NetworkTask extends AsyncTask<String, Void, HttpResponse> {

private AsyncTaskListener listener;


@Override
protected HttpResponse doInBackground(String... params) {
    String link = params[0];
    HttpGet request = new HttpGet(link);
    AndroidHttpClient client = AndroidHttpClient.newInstance("Android");
    try {
        HttpResponse httpResponse = client.execute(request).;
        return httpResponse;
    } catch (IOException e) {
        e.printStackTrace();
        return null;
    } finally {
    client.close();
}
}

@Override
protected void onPostExecute(HttpResponse result) {
    if (result != null){
        try {
            String sRes = EntityUtils.toString(result.getEntity());
            listener.onNTCompleted(sRes);
        } catch (IllegalStateException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

public NetworkTask(AsyncTaskListener listener){
    this.listener=listener;
 }
}

1 个答案:

答案 0 :(得分:0)

我不确定这是否对您有所帮助但是您遇到了问题,因为EntityUtils.toString()从网络流中读取数据,这不应该在UI线程(onPostExecute)上完成。首先尝试将EntityUtils.toString()移至doInBackground()。这可能无助于解决您的问题,但这是正确的做法。