请不要将其标记为重复项,因为我在发布它之前已经搜索了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()

07-25 21:32