2012-02-20 48 views
0

嗨我想在蜂窩上使用RSS閱讀器,但是當運行下面的代碼示例並運行它(我點擊一個按鈕來啓動它,它崩潰)。這就是發生崩潰(通過調試)的代碼:發生在xr.parseSAX分析器與xmlreader在蜂窩崩潰

public List<Article> getLatestArticles(String feedUrl) { 
    Log.v("getLatestArticles","entering"+ feedUrl); 
    URL url = null; 
    try { 


     SAXParserFactory spf = SAXParserFactory.newInstance(); 
     Log.v("getLatestArticles","made instance"); 
     SAXParser sp = spf.newSAXParser(); 
     XMLReader xr = sp.getXMLReader(); 
     Log.v("getLatestArticles","made a bunch of stuff"); 

     url = new URL(feedUrl); 
     Log.v("getLatestArticles","made URL"); 
     xr.setContentHandler(this); 
     Log.v("getLatestArticles","RSS is the following" + this.toString()); 
     Log.v("getLatestArticles","RSS is the following"); 
     xr.parse(new InputSource(url.openStream())); 
     Log.v("getLatestArticles","made parsing possible"); 

碰撞(新的InputSource(url.openStream()));我還發現,崩潰只發生在url.openStream()。如果我試圖甚至運行這個,我得到一個錯誤。

這裏下面是調試信息,我得到:

02-20 17:17:56.566: D/AndroidRuntime(449): Shutting down VM 
02-20 17:17:56.566: W/dalvikvm(449): threadid=1: thread exiting with uncaught exception (group=0x40014760) 
02-20 17:17:56.586: E/AndroidRuntime(449): FATAL EXCEPTION: main 
02-20 17:17:56.586: E/AndroidRuntime(449): android.os.NetworkOnMainThreadException 
02-20 17:17:56.586: E/AndroidRuntime(449): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1077) 
02-20 17:17:56.586: E/AndroidRuntime(449): at java.net.InetAddress.lookupHostByName(InetAddress.java:481) 
02-20 17:17:56.586: E/AndroidRuntime(449): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:281) 
02-20 17:17:56.586: E/AndroidRuntime(449): at java.net.InetAddress.getAllByName(InetAddress.java:249) 
02-20 17:17:56.586: E/AndroidRuntime(449): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:69) 
02-20 17:17:56.586: E/AndroidRuntime(449): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:48) 
02-20 17:17:56.586: E/AndroidRuntime(449): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection$Address.connect(HttpConnection.java:304) 
02-20 17:17:56.586: E/AndroidRuntime(449): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionPool.get(HttpConnectionPool.java:89) 
02-20 17:17:56.586: E/AndroidRuntime(449): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getHttpConnection(HttpURLConnectionImpl.java:292) 
02-20 17:17:56.586: E/AndroidRuntime(449): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.makeConnection(HttpURLConnectionImpl.java:274) 
02-20 17:17:56.586: E/AndroidRuntime(449): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.retrieveResponse(HttpURLConnectionImpl.java:1038) 
02-20 17:17:56.586: E/AndroidRuntime(449): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:523) 
02-20 17:17:56.586: E/AndroidRuntime(449): at java.net.URL.openStream(URL.java:645) 
02-20 17:17:56.586: E/AndroidRuntime(449): at com.tmm.android.rssreader.util.RSSHandler.getLatestArticles(RSSHandler.java:166) 
02-20 17:17:56.586: E/AndroidRuntime(449): at com.tmm.android.rssreader.reader.RssReader.getLatestRssFeed(RssReader.java:44) 
02-20 17:17:56.586: E/AndroidRuntime(449): at com.tmm.android.rssreader.reader.NewspaperFragment.onCreateView(NewspaperFragment.java:38) 
02-20 17:17:56.586: E/AndroidRuntime(449): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:730) 
02-20 17:17:56.586: E/AndroidRuntime(449): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:921) 
02-20 17:17:56.586: E/AndroidRuntime(449): at android.app.BackStackRecord.run(BackStackRecord.java:578) 
02-20 17:17:56.586: E/AndroidRuntime(449): at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1221) 
02-20 17:17:56.586: E/AndroidRuntime(449): at android.app.FragmentManagerImpl$1.run(FragmentManager.java:375) 
02-20 17:17:56.586: E/AndroidRuntime(449): at android.os.Handler.handleCallback(Handler.java:587) 
02-20 17:17:56.586: E/AndroidRuntime(449): at android.os.Handler.dispatchMessage(Handler.java:92) 
02-20 17:17:56.586: E/AndroidRuntime(449): at android.os.Looper.loop(Looper.java:126) 
02-20 17:17:56.586: E/AndroidRuntime(449): at android.app.ActivityThread.main(ActivityThread.java:3997) 
02-20 17:17:56.586: E/AndroidRuntime(449): at java.lang.reflect.Method.invokeNative(Native Method) 
02-20 17:17:56.586: E/AndroidRuntime(449): at java.lang.reflect.Method.invoke(Method.java:491) 
02-20 17:17:56.586: E/AndroidRuntime(449): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 
02-20 17:17:56.586: E/AndroidRuntime(449): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 
02-20 17:17:56.586: E/AndroidRuntime(449): at dalvik.system.NativeStart.main(Native Method) 

有沒有人遇到這個問題,或者遇到過類似的東西?謝謝

回答

0

您的設備不允許建立httpconnection。由於它沒有得到任何數據。這不是SAX解析器失敗。我強烈懷疑這是因爲您試圖在UI線程上訪問HTTP調用。這個主題有趣的blog

+0

我發現這是蜂窩發生的事情。我發現這回答了以下示例:http://stackoverflow.com/questions/6275681/android-3-0-honeycomb-problem-in-parsing-rss-feed – Letheone1 2012-02-21 00:24:17

0

只要確保您可以從模擬器訪問feedUrl(無論您是從哪裏運行代碼),它看起來都是由於某種原因無法到達網址。