2
HttpURLConnection urlConn = (HttpURLConnection) new URL(
                "http://www.google.com").openConnection();

        InputStream is = urlConn.getInputStream();

        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        String inputLine = "";
        while ((inputLine = br.readLine()) != null) {
            result += inputLine;
        }

urlConn.getInputStream() になると、失敗します。ただし、Android プロジェクトではなく、通常の Java プロジェクトでも同じコードが機能します。

Android では、最初のステートメントを実行すると、urlConn は "libcore.net.http.HttpURLConnectionImpl:http://www.google.com" になります。

ただし、通常の Java プロジェクトでは、「sun.net.www.protocol.http.HttpURLConnection:http://www.google.com」です。

ありがとう!!

例外スタック:

11-21 21:14:01.750: I/System.out(20784): debugger has settled (1392)
11-21 21:14:56.380: W/dalvikvm(20784): threadid=1: thread exiting with uncaught exception (group=0x410e49d8)
11-21 21:14:56.420: E/AndroidRuntime(20784): FATAL EXCEPTION: main
11-21 21:14:56.420: E/AndroidRuntime(20784): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.network/com.example.network.MainActivity}: android.os.NetworkOnMainThreadException
11-21 21:14:56.420: E/AndroidRuntime(20784):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1969)
11-21 21:14:56.420: E/AndroidRuntime(20784):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1994)
11-21 21:14:56.420: E/AndroidRuntime(20784):    at android.app.ActivityThread.access$600(ActivityThread.java:126)

INTERNET 権限を追加しました。

4

2 に答える 2

3

ああ、その有名なandroid.os.NetworkOnMainThreadException:)

HoneyComb以降、ネットワーク操作 (デフォルトでは) はメイン (UI) スレッドで実行できません。したがって、AsyncTaskまたはThreadを使用して、この操作を別のスレッドで実行します。

于 2012-11-21T13:51:34.447 に答える
2

UT スレッドでネットワーキングを行わない (NetworkOnMainThreadException)。この例外を回避するには、AsyncTask を使用します。

詳細については、この記事を参照してください: http://www.androiddesignpatterns.com/2012/06/app-force-close-honeycomb-ics.html

于 2012-11-21T13:52:43.590 に答える