Android-没有从HttpResponse获得完整响应
我试图得到一个xml格式的HttpResponse,但我没有得到完整的响应,值得注意的是,如果我循环请求,响应将以不同的部分结束,但永远不会完整 我使用相同的代码从不同的URL请求内容,但我只在其中一个URL上遇到问题 以下是异步任务的代码:Android-没有从HttpResponse获得完整响应,android,get,android-asynctask,httpresponse,Android,Get,Android Asynctask,Httpresponse,我试图得到一个xml格式的HttpResponse,但我没有得到完整的响应,值得注意的是,如果我循环请求,响应将以不同的部分结束,但永远不会完整 我使用相同的代码从不同的URL请求内容,但我只在其中一个URL上遇到问题 以下是异步任务的代码: public class NetworkTask extends AsyncTask<String, Void, HttpResponse> { private AsyncTaskListener listener; @Override
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;
}
}
公共类NetworkTask扩展了AsyncTask{
私有异步任务侦听器;
@凌驾
受保护的HttpResponse doInBackground(字符串…参数){
字符串链接=参数[0];
HttpGet请求=新的HttpGet(链接);
AndroidHttpClient=AndroidHttpClient.newInstance(“Android”);
试一试{
HttpResponse HttpResponse=client.execute(请求)。;
返回httpResponse;
}捕获(IOE异常){
e、 printStackTrace();
返回null;
}最后{
client.close();
}
}
@凌驾
受保护的void onPostExecute(HttpResponse结果){
如果(结果!=null){
试一试{
字符串sRes=EntityUtils.toString(result.getEntity());
侦听器。onNTCompleted(sRes);
}捕获(非法状态){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
}
公用网络任务(AsyncTaskListener侦听器){
this.listener=listener;
}
}
我不确定这是否对您有帮助,但您遇到了一个问题,因为EntityUtils.toString()
从网络流读取数据,这不应该在UI线程(onPostExecute)上执行。首先尝试将EntityUtils.toString()
移动到doInBackground()
。这可能无助于解决您的问题,但这是正确的做法。谢谢,您是对的,但这并不能解决问题。您解决了您的问题吗