请不要将其标记为重复项,因为我在发布它之前已经搜索了Stackoverflow,并找到了该解决方案,
url.openstream() or urlconnection.getinputstream() raise nullpointerexception on valid URL
但是此解决方案也不起作用。
问题是我正在尝试为我的Android应用程序在此url> openStream
上添加http://www.techworld.com/security/rss
。
但是它总是给出NullPointerException
。
我首先检查了连接,看看连接是否成功,
connection.getResponseCode();
并返回
200
,因此连接正常。然后根据可用的解决方案,我将JRE版本从1.7更改为1.6,但这仍然行不通。
当我尝试
openStream
其他URL时,它们在相同的代码下绝对可以正常工作,但是上面的链接给出了NPE
。这是代码,
URL mylink = new URL ("http://www.techworld.com/security/rss");
HttpURLConnection connection;
connection = (HttpURLConnection) myLink.openConnection();
connection.connect();
if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
try {
domObject = new DOM(myLink.openStream());
domObject.start();
} catch (Exception e) {
Log.e(TAG,e+" " + host);
}
}
在上面的代码
host = myLink.getHost();
中。我还要提到的一件事是,当我将此代码作为Java项目而不是Android项目运行时,它将加载finds并且不抛出
NPE
。这可能是什么问题?
这是logCat,它仅显示一行错误,
01-21 20:46:11.575: E/testApp(30335): java.lang.NullPointerException www.techworld.com
最佳答案
至少此代码有效:
URL url;
try {
url = new URL("http://www.techworld.com/security/rss");
HttpURLConnection httpURLConnection;
httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.connect();
if (httpURLConnection.getResponseCode() == HttpURLConnection.HTTP_OK) {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream()));
StringBuffer stringBuffer = new StringBuffer();
try {
String inputLine;
while ((inputLine = bufferedReader.readLine()) != null) {
stringBuffer.append(inputLine).append("\n");
}
} finally {
bufferedReader.close();
}
System.out.println(stringBuffer.toString());
}
} catch (IOException e) {
e.printStackTrace();
}
我认为您的代码尝试两次打开连接。当第一个连接未关闭时,您尝试连接另一个 myLink.openStream()。最好只使用 connection.getInputStream()。