1

无法从服务器读取响应,出现“android.os.NetworkOnMainThreadException”错误。

BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); 字符串 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) 
4

2 回答 2

0

根据android文档,所有网络处理代码都不应该放在主线程中。它适用于旧版本而不适用于新版本。所以使用线程或异步任务。

于 2013-11-13T10:03:58.433 回答
-1

当您从 Internet 获取数据时,将此代码移至或doInBackground方法,并且对 Internet 的任何调用都需要在后台线程中完成,而不是在 UI 线程上,否则会出错。AsyncTaskThread

于 2013-11-13T10:02:44.883 回答