你能告诉我为什么 SAX 解析器会在这一行中断:
InputStream inputStream = new URL(url).openStream();
之前我已经构建了这样的url:
private String url = "http://www.nasa.gov/rss/image_of_the_day.rss";
网址是最新的和功能性的,因此不是由它决定的。
我是SAX的新手所以请原谅我的无知。
以下是Eclipse的错误日志:
11-30 20:27:24.892:E / AndroidRuntime(2388):致命异常:主要 11-30 20:27:24.892:E / AndroidRuntime(2388):java.lang.RuntimeException:无法启动活动ComponentInfo {com.headfirstlabs.nasadailyimage / com.headfirstlabs.nasadailyimage.NasaDailyImage}:java.lang.NullPointerException 11-30 20:27:24.892:E / AndroidRuntime(2388):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955) 11-30 20:27:24.892:E / AndroidRuntime(2388):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980) 11-30 20:27:24.892:E / AndroidRuntime(2388):在android.app.ActivityThread.access $ 600(ActivityThread.java:122) 11-30 20:27:24.892:E / AndroidRuntime(2388):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1146) 11-30 20:27:24.892:E / AndroidRuntime(2388):在android.os.Handler.dispatchMessage(Handler.java:99) 11-30 20:27:24.892:E / AndroidRuntime(2388):在android.os.Looper.loop(Looper.java:137) 11-30 20:27:24.892:E / AndroidRuntime(2388):在android.app.ActivityThread.main(ActivityThread.java:4340) 11-30 20:27:24.892:E / AndroidRuntime(2388):at java.lang.reflect.Method.invokeNative(Native Method) 11-30 20:27:24.892:E / AndroidRuntime(2388):at java.lang.reflect.Method.invoke(Method.java:511) 11-30 20:27:24.892:E / AndroidRuntime(2388):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:784) 11-30 20:27:24.892:E / AndroidRuntime(2388):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 11-30 20:27:24.892:E / AndroidRuntime(2388):at dalvik.system.NativeStart.main(Native Method) 11-30 20:27:24.892:E / AndroidRuntime(2388):引起:java.lang.NullPointerException 11-30 20:27:24.892:E / AndroidRuntime(2388):at com.headfirstlabs.nasadailyimage.IotdHandler.processFeed(IotdHandler.java:58) 11-30 20:27:24.892:E / AndroidRuntime(2388):at com.headfirstlabs.nasadailyimage.NasaDailyImage.onCreate(NasaDailyImage.java:18) 11-30 20:27:24.892:E / AndroidRuntime(2388):在android.app.Activity.performCreate(Activity.java:4465) 11-30 20:27:24.892:E / AndroidRuntime(2388):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 11-30 20:27:24.892:E / AndroidRuntime(2388):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919) 11-30 20:27:24.892:E / AndroidRuntime(2388):... 11更多
答案 0 :(得分:0)
您需要捕获尝试打开流时抛出的异常,并打印(至少)异常消息。这应该足以解释为什么openStream()
调用不起作用。
(我的猜测是,您对网站的访问权限被防火墙阻止,或者您实际尝试连接到其他网址。您也可能以某种方式获得了错误的代码行...)
答案 1 :(得分:0)
我发现有关于这本书的错误页面。 (非常大) 在页105上,它说parse方法缺少一个参数。
你可以看一下:
http://oreilly.com/catalog/errataunconfirmed.csp?isbn=0636920012825