【问题标题】:Android- Not getting full response from HttpResponseAndroid-没有得到 HttpResponse 的完整响应
【发布时间】:2013-11-17 20:59:50
【问题描述】:

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

我使用相同的代码从不同的 Url 请求内容,但我只遇到一个问题。

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

【问题讨论】:

  • 你的问题解决了吗

标签: android get android-asynctask httpresponse


【解决方案1】:

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

【讨论】:

  • 谢谢,你是对的,但这并不能解决问题。
猜你喜欢
  • 2012-04-23
  • 2016-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-10
  • 1970-01-01
  • 2018-10-16
  • 1970-01-01
相关资源
最近更新 更多