0

このクラスを使用して、この URLから JSON を取得しようとしています。

私はそのように getJSONFromUrl を使用しています:

JSONParser jParser = new JSONParser();//Instantiate class
JSONObject json = jParser.getJSONFromUrl("http://tcc-teste.aws.af.cm/api/get/aluno/1");//using getJSNOFromUrl method

そして、logcat で次のエラーが発生します。

08-28 22:46:06.560: E/AndroidRuntime(905): FATAL EXCEPTION: main
08-28 22:46:06.560: E/AndroidRuntime(905): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.br.edu.unifoa/com.example.br.edu.unifoa.MainActivity}: android.os.NetworkOnMainThreadException
08-28 22:46:06.560: E/AndroidRuntime(905):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
08-28 22:46:06.560: E/AndroidRuntime(905):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
08-28 22:46:06.560: E/AndroidRuntime(905):  at android.app.ActivityThread.access$600(ActivityThread.java:141)
08-28 22:46:06.560: E/AndroidRuntime(905):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
08-28 22:46:06.560: E/AndroidRuntime(905):  at android.os.Handler.dispatchMessage(Handler.java:99)
08-28 22:46:06.560: E/AndroidRuntime(905):  at android.os.Looper.loop(Looper.java:137)
08-28 22:46:06.560: E/AndroidRuntime(905):  at android.app.ActivityThread.main(ActivityThread.java:5103)
4

3 に答える 3

1

解析する前にこれを使用してください

public static int SDK_INT = android.os.Build.VERSION.SDK_INT;

if (SDK_INT >= 10) {
                    ThreadPolicy tp = ThreadPolicy.LAX;
                    StrictMode.setThreadPolicy(tp);
                }

この権限をマニフェスト ファイルに追加します

<uses-permission android:name="android.permission.INTERNET" />
于 2013-08-29T03:02:54.100 に答える
0

このエラーの原因となっている UI スレッド (メイン スレッド) で解析しようとしています。asynctask を実行して実行します。それでクラッシュすることはありません。UI スレッドはブロックするため、ネットワーキングや長時間実行される作業は UI スレッドで実行しないでください。

于 2013-08-29T02:55:55.250 に答える