您好我必须获取JSON提要,这就是我使用此代码的原因:
try {
DefaultHttpClient httpclient = new DefaultHttpClient(
new BasicHttpParams());
HttpGet httpget = new HttpGet(CommonUtils.URL);
httpget.setHeader("Authorization", "Bearer " + CommonUtils.BEARER_TOKEN);
httpget.setHeader("Content-type", "application/json");
InputStream inputStream = null;
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
inputStream = entity.getContent();
BufferedReader reader = new BufferedReader(
new InputStreamReader(inputStream, "iso-8859-1"), 8);
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
inputStream.close();
} catch (Exception e) {
Log.e("GetFeedTask", "Error:" + e.getMessage());
}
当我在AsyncTask
中使用此代码并在onCreate()
中调用它但不起作用时,这是有效的,当我直接调用它时抛出异常 GetFeedTask
在onCreate()
。有什么问题?
logcat的:
GetFeedTask Error: null
答案 0 :(得分:2)
通过直接在onCreate()
中运行代码,您尝试在UI线程上进行网络通信。 Android不允许主线程上的网络,并将抛出android.os.NetworkOnMainThreadException
。您正在捕获类型Exception
,它适用于所有运行时错误 - 否则您的程序将因以上原因而崩溃。捕获所有异常并不是最好的做法,因为除了您要保护的模式之外,如果程序继续存在,则可能会出现故障模式。
您应该继续使用AsyncTask
,它会正常工作