每个人 都。我正在编写一个函数,该函数使用类 httpURL 连接连接到服务器。在代码中,我建立了一个连接,按顺序调用了获取输出流()和获取输入流()方法。然后我断开连接。在此之后,我尝试获取通过 getInputStream() 方法获得的数据,但编译器提醒 NullPointer 异常。
代码如下:
DataOutputStream out = null;
InputStreamReader inStrReader = null;
BufferedReader reader = null;
HttpURLConnection connection = null;
try {
URL postUrl = new URL(null, url, new sun.net.www.protocol.https.Handler());
connection = (HttpURLConnection) postUrl.openConnection();
...//some setting methods
connection.connect();
out = new DataOutputStream(connection.getOutputStream());
out.writeBytes(JSONObject.toJSONString(param));
out.flush();
out.close();
inStrReader = new InputStreamReader(connection.getInputStream(), "utf-8");
reader = new BufferedReader(inStrReader);
connection.disconnect(); //<--HERE, release the connection
StringBuilder stringBuilder = new StringBuilder();
for (String line = reader.readLine(); line != null; line = reader.readLine()) { //<--null pointer
stringBuilder.append(line);
}
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
if (out != null) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (inStrReader != null) {
try {
inStrReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
在调试尝试之后,当我将断开连接行移到finally模块的最后一行时,一切都会好起来。但我感到困惑,这是在我已经将“inputstream”值赋给“reader”时发生的。
谢谢。
你做每件事的顺序都错了。这没有意义。
>
您正在断开连接,然后希望能够读取连接。这里完全是胡说八道。通常您根本不应该断开连接,因为您会干扰HTTP连池。只需将其删除,或者,如果您必须拥有它,请在所有关闭后进行。
您以错误的顺序关闭,但根本不需要关闭StrReader中的。关闭BufferedReader可以做到这一点。只需删除StrReader.close()中
的所有代码。
你要关闭
两次。不要这样做。
connect()
隐式发生。您不需要自己调用它。
< code >新URL(url)
就足够了。大约从2003年开始,您就不需要提供HTTPS 处理程序
。
请记住它是一个“流”。您需要有一个活动连接才能从流中读取。只有在从流中检索数据后才关闭连接。
分配不等于读取,读取器.readLine()
从连接开始读取。
输入流读取器正在使用连接来读取字节,在它使用连接读取字节之前断开连接
InputStreamReader是从字节流到字符流的桥梁:它读取字节和。。。
我使用weblogic应用服务器和oracle数据库。我使用jdbc与oracle数据库通信。我从weblogic数据源获得连接,并向表中插入一条记录。问题是,当我想关闭连接(插入数据库后)时,我会遇到一个异常(连接已经关闭)。这是我的代码: 但是联系。close语句引发异常: 我试图避免连接。close语句(因为我教过连接是自动关闭的!!但过了一段时间,所有的连接都打开了,因此引发了一个异常)
我想使用stream getfirst方法两次,但是出现了一个错误,即(java.lang.IllegalStateException:stream已经被操作或关闭),并且这个流代码以此处命名的注释开始。
我尝试使用HttpUrlConnection使我的应用程序与我的php服务器通信。我写了一个在我的电脑上运行良好的类,但当我在手机上执行它时,它根本不起作用。 这是我的代码: DataOutputStream out=新的DataOutputStream(connection.getOutputStream());引发此异常: 我在电脑上测试了这段代码,它没有引发任何异常。我的清单: 谢谢
运行CRON JOB时,得到一个异常,说连接已经关闭。应用程序正在dropwizard上运行,以下是数据库配置 请帮助解决问题。
当从流中收集数据时,我得到了一个烦人的NullPointerException。在我看来,我不应该得到一个,这是困扰我的。 以下是错误代码: descriptiveData不是null,也不包含null对象,但getContrats的结果可能是。这是一个完全有效的业务情况,我认为用过滤器处理它是这样做的方法,但我所能得到的只有这个例外: 谢谢@尼古拉斯的答案确实正确。
我使用AWS DocumentDB作为我在node中开发的应用程序中的数据库。与MongoDB兼容的js。我已经使用MongoClient连接到我的数据库。我的应用程序会执行,但每次执行时会连接大约1000 DB的数据,然后会出现错误: 我尝试使用关闭连接,然后它给出连接池已关闭。我相信这个问题是由于太多的数据库连接造成的。 如何释放MongoDB中的连接?感谢任何帮助。