Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java openStream()仅为一个url提供NullPointerException_Java_Android_Nullpointerexception - Fatal编程技术网

Java openStream()仅为一个url提供NullPointerException

Java openStream()仅为一个url提供NullPointerException,java,android,nullpointerexception,Java,Android,Nullpointerexception,请不要将其标记为重复,因为我在发布之前已经搜索了Stackoverflow,并找到了此解决方案 但是这个解决方案也不起作用 问题是我正试图openStream在这个url>http://www.techworld.com/security/rss适用于我的Android应用程序 但它总是给出NullPointerException 我首先检查了连接是否成功 connection.getResponseCode(); 它返回200,因此连接正常 然后根据可用的解决方案,我将JRE版本从1.7更

请不要将其标记为重复,因为我在发布之前已经搜索了Stackoverflow,并找到了此解决方案

但是这个解决方案也不起作用

问题是我正试图
openStream
在这个url>
http://www.techworld.com/security/rss
适用于我的Android应用程序

但它总是给出
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()。使用连接可能更好。getInputStream()

显示NPE的堆栈跟踪?从上面的代码片段中,唯一的逻辑NPE来自
connection.connect()
lineno,它在
openStream
行上显示
NPE
,您可以看到更新代码的
catch
块。我还添加了Logcat,请参阅。我还想提到的是,其他URL的加载非常好。如果您在本例中没有捕捉到catch块中的错误,那么它实际上会更有用,这样我们就可以查看完整的LogCat stacktrace。这样我们就知道它是专门针对myLink.openStream()还是下一行中的.start()。但是我们假设您告诉我们connect()行是罪魁祸首。@JaySnayder,实际上我试过了,但Eclipse给出的错误是
未处理的异常类型IOException。
然后使用e.printStackTrace()而不是自定义Log.d。。。(内挡)