无法从服务器读取响应,收到“android.os.NetworkOnMainThreadException”错误。
BufferedReader in = new BufferedReader(new InputStreamReader的(socket.getInputStream())); String serverResponse = in.readLine();
W/System.err(1212): android.os.NetworkOnMainThreadException
W/System.err(1212): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1133)
W/System.err(1212): at libcore.io.BlockGuardOs.recvfrom(BlockGuardOs.java:163)
W/System.err(1212): at libcore.io.IoBridge.recvfrom(IoBridge.java:506)
W/System.err(1212): at java.net.PlainSocketImpl.read(PlainSocketImpl.java:488)
W/System.err(1212): at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:46)
W/System.err(1212): at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:240)
答案 0 :(得分:0)
根据android文档,所有网络处理代码不应放在主线程中。它适用于旧版本,不适用于较新版本。所以使用线程或异步任务。
答案 1 :(得分:-1)
将此代码移至doInBackground
或AsyncTask
的{{1}}方法,因为您从Internet获取数据,并且任何对Internet的调用都需要在后台线程中完成不在UI线程上,否则会出错。