0

私はAndroidでURLConnectionから読み取るオラクルの例にうんざりしています。これはコードです

``try{
            URL oracle = new URL("http://www.oracle.com/");
            Proxy proxy = new Proxy(Proxy.Type.HTTP,newInetSocketAddress("192.168.3.254",3128)); // or whatever your proxy is
            URLConnection yc = oracle.openConnection(proxy);
            BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));
            String inputLine;
            while ((inputLine = in.readLine()) != null) 
               Toast.makeText(this, inputLine, Toast.LENGTH_SHORT);
            in.close();
        }
    catch(IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

プロキシ エミュレータの設定が構成されていることに気付きました このログ エラーがあります

>04-20 14:20:21.842: D/AndroidRuntime(988): VM をシャットダウンしています 04-20 14:20:21.842: W/dalvikvm(988): threadid=1: キャッチされない例外で終了するスレッド (group=0x409c01f8) 04-20 14:20:21.862: E/AndroidRuntime(988): 致命的な例外: メイン 04-20 14:20:21.862: E/AndroidRuntime(988): java.lang.RuntimeException: アクティビティ ComponentInfo{connect を開始できません。 oracle.java/connect.oracle.java.ConnectActivity}: android.os.NetworkOnMainThreadException 04-20 14:20:21.862: E/AndroidRuntime(988): android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956) で 04 -20 14:20:21.862: E/AndroidRuntime(988): android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 04-20 14:20:21.862: E/AndroidRuntime(988): android.app で.ActivityThread.access$600(ActivityThread.java:123) 04-20 14:20:21.862: E/AndroidRuntime(988): android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 04-20 14:20:21.862: E/AndroidRuntime(988): android.os.Handler.dispatchMessage(Handler.java:99) 04-20 14:20: 21.862: E/AndroidRuntime(988): android.os.Looper.loop(Looper.java:137) 04-20 14:20:21.862: E/AndroidRuntime(988): android.app.ActivityThread.main(ActivityThread) .java:4424) 04-20 14:20:21.862: E/AndroidRuntime(988): java.lang.reflect.Method.invokeNative(ネイティブ メソッド) 04-20 14:20:21.862: E/AndroidRuntime(988) : java.lang.reflect.Method.invoke(Method.java:511) 04-20 14:20:21.862: E/AndroidRuntime(988): com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit) で.java:784) 04-20 14:20:21.862: E/AndroidRuntime(988): com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 04-20 14:20:21.862: E /AndroidRuntime(988): dalvik.system.NativeStart で。main(Native Method) 04-20 14:20:21.862: E/AndroidRuntime(988): 原因: android.os.NetworkOnMainThreadException 04-20 14:20:21.862: E/AndroidRuntime(988): android.os で。 StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099) 04-20 14:20:21.862: E/AndroidRuntime(988): java.net.InetAddress.getHostByAddrImpl(InetAddress.java:440) 04-20 14:20: 21.862: E/AndroidRuntime(988): java.net.InetAddress.getHostName(InetAddress.java:313) 04-20 14:20:21.862: E/AndroidRuntime(988): java.net.InetSocketAddress.getHostName(InetSocketAddress) .java:156) 04-20 14:20:21.862: E/AndroidRuntime(988): libcore.net.http.HttpConnection$Address.(HttpConnection.java:322) 04-20 14:20:21.862: E/ AndroidRuntime(988): libcore.net.http.HttpConnection.connect(HttpConnection.java:96) 04-20 14:20:21.862: E/AndroidRuntime(988): libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:308) 04-20 14:20:21.862: E/AndroidRuntime(988): libcore.net.http.HttpEngine.connect(HttpEngine.java:303) 04-20 14:20: 21.862: E/AndroidRuntime(988): libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:282) 04-20 14:20:21.862: E/AndroidRuntime(988): libcore.net.http.HttpEngine で.sendRequest(HttpEngine.java:232) 04-20 14:20:21.862: E/AndroidRuntime(988): libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:273) 04-20 14:20:21.862 : E/AndroidRuntime(988): libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:168) 04-20 14:20:21.862: E/AndroidRuntime(988): connect.oracle.java.ConnectActivity で。 onCreate(ConnectActivity.java:22) 04-20 14:20:21.862: E/AndroidRuntime(988): android.app.Activity.performCreate(Activity.java:4465) 04-20 14:20:21.862: E/AndroidRuntime(988): android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 04-20 14:20:21.862: E/AndroidRuntime(988): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920) 04-20 14:20:21.862: E/AndroidRuntime(988): ... 11 もっと見る

そして、よろしくお願いします

4

3 に答える 3

1

厳密モードがオンになっています。UIスレッドが遅いIO処理を実行するのをブロックすると、文句を言います。

strictモードをオフにするか、-常により良いオプション-IOコードをバックグラウンドスレッドに移動します。

于 2012-04-20T15:28:17.487 に答える
0

マニフェスト ファイルにインターネット アクセス許可が追加されていますか?

<uses-permission android:name="android.permission.INTERNET" />
于 2012-04-20T15:26:46.383 に答える
0

IO コードをバックグラウンド スレッド (または) 非同期タスク (要件に適合する場合) に移動します。メイン スレッドでネットワーク呼び出しを使用することはベスト プラクティスではありません。この記事を参照してください。

于 2012-04-20T15:32:49.653 に答える