我在Android客户端通过访问后台的B/S服务器端获取数据,但是发生
FATAL EXCEPTION: main 07-25 03:31:25.101: ERROR/AndroidRuntime(887): android.os.NetworkOnMainThreadException
07-25 03:31:25.101: ERROR/AndroidRuntime(887): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099)
07-25 03:31:25.101: ERROR/AndroidRuntime(887):     at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84)
07-25 03:31:25.101: ERROR/AndroidRuntime(887):     at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
07-25 03:31:25.101: ERROR/AndroidRuntime(887):     at libcore.io.IoBridge.connect(IoBridge.java:112)
07-25 03:31:25.101: ERROR/AndroidRuntime(887):     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
07-25 03:31:25.101: ERROR/AndroidRuntime(887):     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)
07-25 03:31:25.101: ERROR/AndroidRuntime(887):     at java.net.Socket.connect(Socket.java:842)07-25 03:31:25.101: ERROR/AndroidRuntime(887):     at com.amaker.util.HttpUtil.getHttpResponse(HttpUtil.java:56)
07-25 03:31:25.101: ERROR/AndroidRuntime(887):     at com.amaker.util.HttpUtil.queryStringForPost(HttpUtil.java:71)
07-25 03:31:25.101: ERROR/AndroidRuntime(887):     at com.amaker.wlo.LoginActivity.query(LoginActivity.java:138)
07-25 03:31:25.101: ERROR/AndroidRuntime(887):     at com.amaker.wlo.LoginActivity.login(LoginActivity.java:77)
07-25 03:31:25.101: ERROR/AndroidRuntime(887):     at com.amaker.wlo.LoginActivity.access$1(LoginActivity.java:71)
07-25 03:31:25.101: ERROR/AndroidRuntime(887):     at com.amaker.wlo.LoginActivity$2.onClick(LoginActivity.java:50)
主要是 无法获取后台的response相应,这个异常,请高手指导一下该如何解决?

解决方案 »

  1.   

    android.os.NetworkOnMainThreadException意思是说把访问网络的程序放到了主线程,这个是不允许的。解决办法,把访问网络的这段代码放到单独的一个线程中:new Thread(){
     @Override
     public void run()
    {
     //这里放你的那段访问网络的代码
     //代码执行完毕后给handler发送消息
     handler.sendEmptyMessage(0);
     }
     }.start();
     
     
     
    //定义Handler对象
     private Handler handler =new Handler(){
     @Override
     //当有消息发送出来的时候就执行Handler的这个方法
     public void handleMessage(Message msg){
     super.handleMessage(msg);
    //处理UI
     }
     };
      

  2.   

    +1,现在在android中,只要你操作网络,就不能在主线程中。