02-08 20:34:18.700: D/AndroidRuntime(1487): Shutting down VM
02-08 20:34:18.700: W/dalvikvm(1487): threadid=1: thread exiting with uncaught exception (group=0x41490930)
02-08 20:34:18.710: E/AndroidRuntime(1487): FATAL EXCEPTION: main
02-08 20:34:18.710: E/AndroidRuntime(1487): android.os.NetworkOnMainThreadException
02-08 20:34:18.710: E/AndroidRuntime(1487):  at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
02-08 20:34:18.710: E/AndroidRuntime(1487):  at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84)
02-08 20:34:18.710: E/AndroidRuntime(1487):  at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
02-08 20:34:18.710: E/AndroidRuntime(1487):  at libcore.io.IoBridge.connect(IoBridge.java:112)
02-08 20:34:18.710: E/AndroidRuntime(1487):  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
02-08 20:34:18.710: E/AndroidRuntime(1487):  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)
02-08 20:34:18.710: E/AndroidRuntime(1487):  at java.net.Socket.connect(Socket.java:842)
02-08 20:34:18.710: E/AndroidRuntime(1487):  at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:119)
02-08 20:34:18.710: E/AndroidRuntime(1487):  at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:144)
02-08 20:34:18.710: E/AndroidRuntime(1487):  at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
02-08 20:34:18.710: E/AndroidRuntime(1487):  at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
02-08 20:34:18.710: E/AndroidRuntime(1487):  at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
02-08 20:34:18.710: E/AndroidRuntime(1487):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
02-08 20:34:18.710: E/AndroidRuntime(1487):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
02-08 20:34:18.710: E/AndroidRuntime(1487):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
02-08 20:34:18.710: E/AndroidRuntime(1487):  at com.example.aa.MainActivity.get(MainActivity.java:76)
02-08 20:34:18.710: E/AndroidRuntime(1487):  at com.example.aa.MainActivity.access$1(MainActivity.java:68)
02-08 20:34:18.710: E/AndroidRuntime(1487):  at com.example.aa.MainActivity$1.onClick(MainActivity.java:50)
02-08 20:34:18.710: E/AndroidRuntime(1487):  at android.view.View.performClick(View.java:4204)
02-08 20:34:18.710: E/AndroidRuntime(1487):  at android.view.View$PerformClick.run(View.java:17355)
02-08 20:34:18.710: E/AndroidRuntime(1487):  at android.os.Handler.handleCallback(Handler.java:725)
02-08 20:34:18.710: E/AndroidRuntime(1487):  at android.os.Handler.dispatchMessage(Handler.java:92)
02-08 20:34:18.710: E/AndroidRuntime(1487):  at android.os.Looper.loop(Looper.java:137)
02-08 20:34:18.710: E/AndroidRuntime(1487):  at android.app.ActivityThread.main(ActivityThread.java:5041)
02-08 20:34:18.710: E/AndroidRuntime(1487):  at java.lang.reflect.Method.invokeNative(Native Method)
02-08 20:34:18.710: E/AndroidRuntime(1487):  at java.lang.reflect.Method.invoke(Method.java:511)
02-08 20:34:18.710: E/AndroidRuntime(1487):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:817)
02-08 20:34:18.710: E/AndroidRuntime(1487):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
02-08 20:34:18.710: E/AndroidRuntime(1487):  at dalvik.system.NativeStart.main(Native Method)
02-08 20:34:18.710: D/dalvikvm(1487): GC_CONCURRENT freed 316K, 17% free 5482K/6528K, paused 2ms+3ms, total 26ms

解决方案 »

  1.   

    at com.example.aa.MainActivity.get(MainActivity.java:76)看这一行
      

  2.   

    HttpResponse response = client.execute(request);  
      

  3.   

    以解决:Android4.0 以后不允许在主线程进行网络连接
    http://www.2cto.com/kf/201310/248730.html
      

  4.   

    android 4.0以上的版本访问网络,必须使用新线程
      

  5.   


    那么请问为什么我这样写还是不行?
    我想实现访问网络并取得网络内容的函数方法。
    比如
    String httpget(String targetURL){
    .....
    .....
    .....
    return response;
    }
      

  6.   

    new Thread(new Runnable() { @Override
    public void run() {
    //get方法,handler抛出结果
    }
    }).start();
      

  7.   

    android中网络连接的一些代码不能放在ui主线程!用android自带的AsyncTask类来完成异步操作,或者另起一个Thread来处理。
      

  8.   

    主线程不能阻塞超过5秒,http请求之类的应该另外开线程。
      

  9.   


    那么请问为什么我这样写还是不行?
    我想实现访问网络并取得网络内容的函数方法。
    比如
    String httpget(String targetURL){
    .....
    .....
    .....
    return response;
    }
    你需要将该方法放到一个新的thread或者HandlerThread中执行。或者使用AsyncTask,在 doInBackgroud中执行。