【发布时间】:2014-01-16 00:44:21
【问题描述】:
对于一个 android 应用程序,由于新服务器的原因,我正在尝试更改 XML 的 URL,但内容是相同的。 我曾经这样做过:
InputSource ins = new InputSource(rssUrl.openStream());
这曾经有效,并且几天后仍然有效,而旧 URL 在旧服务器上可用。但是当我更改 XML 的 URL 时,我在上面的行中得到了 NullPointerException。
我确定 rssUrl 不为空,我打印了它的值,它只是工作 URL。我验证了 XMl 并且 XML 是有效的,但这并不重要,因为问题是在解析开始之前提出的。
我尝试过的事情之一是这样的:
Urlconnection urlConnection= rssUrl.openurlconnection();
InputStream in = new BufferedInputStream(urlConnection.getInputStream());
inputsource ins = new inputsource(in);
但这也引发了空指针异常。
我读了一些东西about downgrading my Java to 6(目前我正在使用 7)。但我真的不喜欢它,也无法想象它为什么会起作用。
编辑: 我尝试降级到 java se 6 但没有用。
有谁知道这个错误是怎么发生的以及如何解决它?
堆栈:
12-28 22:14:53.635: W/System.err(6949): java.lang.NullPointerException
12-28 22:14:53.725: W/System.err(6949): at libcore.net.http.HttpConnection$Address.hashCode(HttpConnection.java:343)
12-28 22:14:53.725: W/System.err(6949): at java.util.HashMap.get(HashMap.java:298)
12-28 22:14:53.725: W/System.err(6949): at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:67)
12-28 22:14:53.725: W/System.err(6949): at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
12-28 22:14:53.725: W/System.err(6949): at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:308)
12-28 22:14:53.725: W/System.err(6949): at libcore.net.http.HttpEngine.connect(HttpEngine.java:303)
12-28 22:14:53.735: W/System.err(6949): at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:282)
12-28 22:14:53.735: W/System.err(6949): at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:232)
12-28 22:14:53.735: W/System.err(6949): at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:273)
12-28 22:14:53.735: W/System.err(6949): at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:168)
12-28 22:14:53.735: W/System.err(6949): at java.net.URL.openStream(URL.java:462)
12-28 22:14:53.735: W/System.err(6949): at com.hera.ontdekdelft.StartUp$LoadData.doInBackground(StartUp.java:610)
12-28 22:14:53.735: W/System.err(6949): at com.hera.ontdekdelft.StartUp$LoadData.doInBackground(StartUp.java:1)
12-28 22:14:53.735: W/System.err(6949): at android.os.AsyncTask$2.call(AsyncTask.java:264)
12-28 22:14:53.735: W/System.err(6949): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
12-28 22:14:53.735: W/System.err(6949): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
12-28 22:14:53.735: W/System.err(6949): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
12-28 22:14:53.735: W/System.err(6949): at j.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
12-28 22:14:53.735: W/System.err(6949): at java.lang.Thread.run(Thread.java:856)
ava.util
解决方案
URL 中的下划线导致 android 失败。我的解决方案是编辑 XML 文件的 url,以便 rssUrl.openstream() 再次工作。问题解决了,感谢Kiruwka
【问题讨论】:
-
请发布异常堆栈跟踪以及
rssUrl的初始化和类型。
标签: java android nullpointerexception