Java HttpURLConnection帮助我避免了NullPointerException
我今天在使用HttpURLConnection时遇到了这个非常奇怪的事情。下面的代码基本上是从URL读取数据,并将数据(使用GSON将其解析为java对象后)存储到java对象中。数据还同时存储在我序列化并保存到文件中的另一个对象中。如果无法访问我的URL,我将从文件中读取数据。URL是一个安全的URL,我只能通过VPN访问。所以为了测试我的程序,我断开了VPN的连接,看看我是否能够从文件中读取数据。下面的第一个代码向我抛出了一个空指针,而第二个没有。您可以看到的唯一区别是,在第二个示例中,我使用了HttpURLConnection。使用它有什么帮助?有人遇到过类似的事情,还是我忽略了什么 无法访问URL时抛出空指针的代码-Java HttpURLConnection帮助我避免了NullPointerException,java,Java,我今天在使用HttpURLConnection时遇到了这个非常奇怪的事情。下面的代码基本上是从URL读取数据,并将数据(使用GSON将其解析为java对象后)存储到java对象中。数据还同时存储在我序列化并保存到文件中的另一个对象中。如果无法访问我的URL,我将从文件中读取数据。URL是一个安全的URL,我只能通过VPN访问。所以为了测试我的程序,我断开了VPN的连接,看看我是否能够从文件中读取数据。下面的第一个代码向我抛出了一个空指针,而第二个没有。您可以看到的唯一区别是,在第二个示例中,我使
public static void getInfoFromURL() throws IOException {
Gson gson = null;
URL url = null;
BufferedReader bufferedReader = null;
String inputLine = "";
try {
gson = new Gson();
url = new URL(addressURL);
bufferedReader = new BufferedReader(new InputStreamReader(url.openStream()));
while ((inputLine = bufferedReader.readLine()) != null) {
addressData = ((AddressData) gson.fromJson(inputLine,AddressData.class));
}
} catch (MalformedURLException mue) {
logger.error("Malformed URL exception " + mue+ " occured while accessing the URL ");
} catch (IOException ioe) {
logger.error("IO exception " + ioe+ " occured while accessing the URL ");
} finally {
if (bufferedReader != null)
bufferedReader.close();
}
}
工作正常的代码:
public static void getInfoFromURL() throws IOException {
Gson gson = null;
URL url = null;
BufferedReader bufferedReader = null;
HttpURLConnection connection =null;
String inputLine = "";
try {
gson = new Gson();
url = new URL(addressURL);
connection = (HttpURLConnection) url.openConnection(); //This seems to be helping
connection.connect();
bufferedReader = new BufferedReader(new InputStreamReader(url.openStream()));
while ((inputLine = bufferedReader.readLine()) != null) {
addressData = ((AddressData) gson.fromJson(inputLine,AddressData.class));
}
} catch (MalformedURLException mue) {
logger.error("Malformed URL exception " + mue+ " occured while accessing the URL ");
} catch (IOException ioe) {
logger.error("IO exception " + ioe+ " occured while accessing the URL ");
} finally {
if (bufferedReader != null)
bufferedReader.close();
}
}
如果“抛出空指针”,你能将stacktrace附加到你的问题上吗?我尝试在我的电脑上运行你的代码,但没有失败。它正确地抛出一个被catch块捕获的
ConnectException
。我使用的是OpenJDK 1.7.025,64位,Linux。您正在使用哪个JVM?不,它在com.global.usa.test.myapp.util.test.getInfoFromURL(test.java:54)的线程“main”java.lang.NullPointerException中抛出一个nullpointer异常-异常。第54行是调用此方法的代码中的行号。当你说你没有得到错误时,你是如何试图重现它的?在我的情况下,我必须确保URL是不可访问的,所以我必须离开我的vpn。只是想知道你做了什么来复制它?对于一个简单的URL,它应该没有什么区别。当你说“54是代码中的行号”时,它是代码中的哪一行?为什么你还没有发布堆栈跟踪?这是秘密吗?