麻烦牛人看看,我这程序在虚拟机上正常运行,在真机上就出问题了,下载TOMCAT的某资源。
code:
public String download(String urlStr){
StringBuffer nb=new StringBuffer();
String line=null;
BufferedReader buffer=null;
try{
//create an url
url=new URL(urlStr);
//create an http
HttpURLConnection urlConn=(HttpURLConnection)url.openConnection();
//read data by io
buffer=new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
while((line=buffer.readLine())!=null){
nb.append(line);
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{
buffer.close();
}catch(Exception e){
e.printStackTrace();
}
}
return nb.toString();
}
LOG:
06-12 01:54:32.743 W/System.err( 2261): android.os.NetworkOnMainThreadException
06-12 01:54:32.763 W/System.err( 2261): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
06-12 01:54:32.763 W/System.err( 2261): at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84)
06-12 01:54:32.763 W/System.err( 2261): at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
06-12 01:54:32.763 W/System.err( 2261): at libcore.io.IoBridge.connect(IoBridge.java:112)
06-12 01:54:32.763 W/System.err( 2261): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
06-12 01:54:32.763 W/System.err( 2261): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)
06-12 01:54:32.773 W/System.err( 2261): at java.net.Socket.connect(Socket.java:842
06-12 01:54:32.773 W/System.err( 2261): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:76)
06-12 01:54:32.773 W/System.err( 2261): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
06-12 01:54:32.773 W/System.err( 2261): at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:341)
06-12 01:54:32.773 W/System.err( 2261): at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87)
06-12 01:54:32.773 W/System.err( 2261): at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
06-12 01:54:32.773 W/System.err( 2261): at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:315)
06-12 01:54:32.773 W/System.err( 2261): at libcore.net.http.HttpEngine.connect(HttpEngine.java:310)
06-12 01:54:32.773 W/System.err( 2261): at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:289)
06-12 01:54:32.773 W/System.err( 2261): at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:239)
06-12 01:54:32.773 W/System.err( 2261): at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:273)
06-12 01:54:32.773 W/System.err( 2261): at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:168)
06-12 01:54:32.773 W/System.err( 2261): at download.HttpDownloader.download(HttpDownloader.java:27)
06-12 01:54:32.773 W/System.err( 2261): at myplayer.namespace.Mp3ListActivity.downloadXML(Mp3ListActivity.java:91)
06-12 01:54:32.773 W/System.err( 2261): at myplayer.namespace.Mp3ListActivity.onOptionsItemSelected(Mp3ListActivity.java:64)
06-12 01:54:32.773 W/System.err( 2261): at android.app.Activity.onMenuItemSelected(Activity.java:2576)
06-12 01:54:32.773 W/System.err( 2261): at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:958)
06-12 01:54:32.773 W/System.err( 2261): at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735)
06-12 01:54:32.773 W/System.err( 2261): at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:149)
06-12 01:54:32.773 W/System.err( 2261): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874)
06-12 01:54:32.773 W/System.err( 2261): at com.android.internal.view.menu.IconMenuView.invokeItem(IconMenuView.java:468)
06-12 01:54:32.773 W/System.err( 2261): at com.android.internal.view.menu.IconMenuItemView.performClick(IconMenuItemView.java:126)
06-12 01:54:32.773 W/System.err( 2261): at android.view.View$PerformClick.run(View.java:16966)
06-12 01:54:32.773 W/System.err( 2261): at android.os.Handler.handleCallback(Handler.java:615)
06-12 01:54:32.773 W/System.err( 2261): at android.os.Handler.dispatchMessage(Handler.java:92)
06-12 01:54:32.773 W/System.err( 2261): at android.os.Looper.loop(Looper.java:137)
06-12 01:54:32.773 W/System.err( 2261): at android.app.ActivityThread.main(ActivityThread.java:4745)
06-12 01:54:32.773 W/System.err( 2261): at java.lang.reflect.Method.invokeNative(Native Method)
06-12 01:54:32.773 W/System.err( 2261): at java.lang.reflect.Method.invoke(Method.java:511)
06-12 01:54:32.773 W/System.err( 2261): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:806)
06-12 01:54:32.773 W/System.err( 2261): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:573)
06-12 01:54:32.773 W/System.err( 2261):at dalvik.system.NativeStart.main(Native Method)Tomcat虚拟机

解决方案 »

  1.   

    06-12 01:54:32.773 W/System.err( 2261): at download.HttpDownloader.download(HttpDownloader.java:27)
    06-12 01:54:32.773 W/System.err( 2261): at myplayer.namespace.Mp3ListActivity.downloadXML(Mp3ListActivity.java:91)
    06-12 01:54:32.773 W/System.err( 2261): at myplayer.namespace.Mp3ListActivity.onOptionsItemSelected(Mp3ListActivity.java:64)
    http://www.cnblogs.com/freexiaoyu/archive/2012/04/13/2445707.html
      

  2.   

    你不能在UI主线程上执行网络IO。从技术上来说,早期的android版本可以,但是这个真的不是一个好方法,它会让你的app停止响应,而且可能会导致OS杀死你的app。你可能需要在一个后台线程中运行一个后台进程或者是用AsyncTask来执行你的网络事物。
    http://ask.csdn.net/questions/250