Android URL从示例中获取和解析 - 错误

时间:2012-11-05 10:04:09

标签: android

我正在尝试一个简单的例子:http://www.vogella.com/articles/AndroidJSON/article.html

但是收到了错误..任何人都可以告诉我为什么会收到此错误:http://puu.sh/1mGz1

2 个答案:

答案 0 :(得分:1)

使用AsyncTask从UI线程发出服务器请求,因此请将代码更改为:

  ///Your code...
      @Override
      public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        new LongOperation().execute("");
      }

    private class LongOperation extends AsyncTask<String, Void, String> {

          @Override
          protected String doInBackground(String... params) {
                //call readtwitterFeed() method here
                String readtwitterFeed=readtwitterFeed(); 

                return readtwitterFeed;
          }      

          @Override
          protected void onPostExecute(String result) {      
                try {
                  JSONArray jsonArray = new JSONArray(result);
                  Log.i(ParseJSON.class.getName(),
                      "Number of entries " + jsonArray.length());
                  for (int i = 0; i < jsonArray.length(); i++) {
                    JSONObject jsonObject = jsonArray.getJSONObject(i);
                    Log.i(ParseJSON.class.getName(), jsonObject.getString("text"));
                  }
                } catch (Exception e) {
                  e.printStackTrace();
                }     
          }

          @Override
          protected void onPreExecute() {
          }

          @Override
          protected void onProgressUpdate(Void... values) {
          }
    }

答案 1 :(得分:0)

您正尝试在主线程上发出数据请求。使用AsyncTask执行此操作 或者在onCreate()方法中添加这两行来绕过它。

    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy); 

我建议使用asynctask。