很明显了 把网络操作放在线程中操作,这个错误很明显的告诉你 你把网络操作放在了主线程 这是不允许的!你需要另起线程进行网络操作
new thread(){public void run(){
写上你的那些代码试试!
}}.start()

解决方案 »

  1.   

    connection.disconnect();
    你这是要干嘛,断开连接?
      

  2.   

    找出问题点了,在MainActivity中调用这个类的网络操作方法,可能会导致activity的一些问题,谷歌从在android2.3版本以后,系统增加了一个类:StrictMode。这个类对网络的访问方式进行了一定的改变。 
    StrictMode通常用于捕获磁盘访问或者网络访问中与主进程之间交互产生的问题,因为在主进程中,UI操作和一些动作的执行是最经常用到的,它们之间会产生一定的冲突问题。将磁盘访问和网络访问从主线程中剥离可以使磁盘或者网络的访问更加流畅,提升响应度和用户体验。
    如果一定要这样操作的话,需要在MainActivity中加入如下代码:
    StrictMode.setThreadPolicy(new 
    StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build());
            StrictMode.setVmPolicy(
    new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().detectLeakedClosableObjects().penaltyLog().penaltyDeath().build());并且在配置文件中将SDK的最低等级设为11
      

  3.   

    这里没有错吗?connection.disconnect();
      

  4.   

    <uses-permission android:name="android.permission.INTERNET"/>
      

  5.   


    这个放在MainActivity的什么地方啊
      

  6.   


    这个放在MainActivity的什么地方啊onCreate方法中