0

您好,我必须获取 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()不起作用并抛出异常。有什么问题?GetFeedTaskonCreate()

日志猫:

GetFeedTask  Error: null
4

1 回答 1

2

通过直接在其中运行代码,onCreate()您可以尝试在 UI 线程上进行网络通信。Android 不允许在主线程上联网,并且会抛出android.os.NetworkOnMainThreadException. 您正在捕获一种Exception适用于所有运行时错误的类型 - 否则您的程序会因上述原因而崩溃。捕获所有异常不是最佳实践,因为您可能有一种故障模式,而不是您要保护的故障模式,如果程序继续运行,这将导致问题。

你应该继续使用AsyncTask它,它会工作

于 2013-07-24T21:07:56.000 回答