我正在尝试一个简单的例子:http ://www.vogella.com/articles/AndroidJSON/article.html
但是出现错误.. 谁能告诉我为什么会出现此错误: http: //puu.sh/1mGz1
我正在尝试一个简单的例子:http ://www.vogella.com/articles/AndroidJSON/article.html
但是出现错误.. 谁能告诉我为什么会出现此错误: http: //puu.sh/1mGz1
使用AsyncTask 从 UI Thread 发出服务器请求,因此将代码更改为:
///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) {
}
}
您正在尝试在主线程上发出数据请求。使用AsyncTask来完成。
或者在 onCreate() 方法中添加这 2 行来绕过它。
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
我建议使用 asynctask。