2012-04-15 66 views
1

大家好我是在XML解析新的时,我从URL获取XML并调用url.openStream()方法的IO异常产生任何帮助我..为什么URL.openStream()方法会产生IOException?

SAXParserFactory spf =SAXParserFactory.newInstance(); 
     SAXParser sp = spf.newSAXParser(); 
     XMLReader xr = sp.getXMLReader(); 

     /** Send URL to parse XML Tags */ 
     URL sourceUrl = new URL("http://api.androidhive.info/music/music.xml"); 
     DataHandler mdaDataHandler = new DataHandler(); 
     xr.setContentHandler(mdaDataHandler); 
     InputStream io = sourceUrl.openStream();//exception is here 
     xr.parse(new InputSource(io)); 
     mmusic = mdaDataHandler.getParseData(); 

例外是这个

04-15 15:07:06.310: W/System.err(590): java.net.SocketException: Permission denied 
04-15 15:07:06.440: W/System.err(590): at  
org.apache.harmony.luni.platform.OSNetworkSystem.createStreamSocketImpl(Native Method) 
04-15 15:07:06.440: W/System.err(590): at org.apache.harmony.luni.platform.OSNetworkSystem.createStreamSocket(OSNetworkSystem.java:186) 
04-15 15:07:06.450: W/System.err(590): at org.apache.harmony.luni.net.PlainSocketImpl.create(PlainSocketImpl.java:265) 
04-15 15:07:06.460: W/System.err(590): at java.net.Socket.checkClosedAndCreate(Socket.java:873) 
04-15 15:07:06.460: W/System.err(590): at java.net.Socket.connect(Socket.java:1020) 
04-15 15:07:06.470: W/System.err(590): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:62) 
04-15 15:07:06.470: W/System.err(590): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionPool.get(HttpConnectionPool.java:88) 
04-15 15:07:06.480: W/System.err(590): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getHTTPConnection(HttpURLConnectionImpl.java:927) 
04-15 15:07:06.490: W/System.err(590): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:909) 
04-15 15:07:06.490: W/System.err(590): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:1152) 
04-15 15:07:06.500: W/System.err(590): at java.net.URL.openStream(URL.java:653) 
04-15 15:07:06.500: W/System.err(590): at com.listview.experiment.CustomListViewActivity.parseXML(CustomListViewActivity.java:56) 
04-15 15:07:06.510: W/System.err(590): at com.listview.experiment.CustomListViewActivity.access$0(CustomListViewActivity.java:43) 
04-15 15:07:06.520: W/System.err(590): at com.listview.experiment.CustomListViewActivity$1.onClick(CustomListViewActivity.java:34) 
04-15 15:07:06.520: W/System.err(590): at android.view.View.performClick(View.java:2408) 
04-15 15:07:06.520: W/System.err(590): at android.view.View$PerformClick.run(View.java:8816) 
04-15 15:07:06.530: W/System.err(590): at android.os.Handler.handleCallback(Handler.java:587) 
04-15 15:07:06.540: W/System.err(590): at android.os.Handler.dispatchMessage(Handler.java:92) 
04-15 15:07:06.550: W/System.err(590): at android.os.Looper.loop(Looper.java:123) 
04-15 15:07:06.550: W/System.err(590): at android.app.ActivityThread.main(ActivityThread.java:4627) 
04-15 15:07:06.550: W/System.err(590): at java.lang.reflect.Method.invokeNative(Native Method) 
04-15 15:07:06.560: W/System.err(590): at java.lang.reflect.Method.invoke(Method.java:521) 
04-15 15:07:06.570: W/System.err(590): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
04-15 15:07:06.570: W/System.err(590): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
04-15 15:07:06.570: W/System.err(590): at dalvik.system.NativeStart.main(Native Method) 

清单是

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.sam.testParsing" 
    android:versionCode="1" 
    android:versionName="1.0" > 
    <uses-permission android:name="android.permission.INTERNET"/> 
    <uses-sdk android:minSdkVersion="8" /> 
    <application 
    android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" > 
     <activity 
      android:label="@string/app_name" 
      android:name=".XMLParsingActivity" > 
       <intent-filter > 
        <action android:name="android.intent.action.MAIN" /> 

        <category android:name="android.intent.category.LAUNCHER" /> 
        </intent-filter> 
        </activity> 
       </application> 
      </manifest> 
+0

什么是例外? – Habib 2012-04-15 15:06:33

+0

请从logcat发布异常堆栈跟踪。 – 2012-04-15 15:06:53

+0

你有android.permission.INTERNET在你的Android清单权限 – Habib 2012-04-15 15:10:17

回答

1

您需要添加到您的清单文件:

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

确保它仅位于<manifest>标签的下方。

+0

我已经把这个权限我已经使用模拟器进行测试是任何问题可能是由仿真器。 – sandee 2012-04-15 15:15:38

+0

请帮我解释为什么这个例外来了? – sandee 2012-04-15 15:20:29

+0

@sandee - 这个错误几乎总是出现,因为清单缺少''标签,或者标签位于清单文件中的错误位置。你可以在你的原始问题中发布你的清单文件吗?如果模拟器配置是问题,我认为会有不同的异常消息。 – 2012-04-15 15:22:23

3

你不能在UI线程上调用Url.openStream()。使用AsyncTask执行此操作并在完成时正确更新UI。 `

相关问题