我有一些代码可以将我的HTTPResponse
Object 转换为 a JSONObject
,大部分时间都可以正常工作:
public static JSONObject httpResponseToJson(HttpResponse response) {
if (response != null) {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(),
"UTF-8"));
String json = reader.readLine();
if (json != null) {
JSONObject jsonObject = new JSONObject(json);
printStatus(jsonObject);
return jsonObject;
}
} catch (JSONException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
但是,有时它会抛出 Android NetworkOnMainThread exception
。我不知道为什么,因为响应已经完成,并且该调用不应该再有网络 IO。出于测试原因,如果我允许NetworkOnMainThread
,此方法始终可以正常工作。
请注意,所有的HTTPResponse
都是用 an 获取的AsyncTask
,这工作正常。
我对任何建议都很感兴趣。