tout le monde. Je code une fonction qui se connecte à un serveur en utilisant Class HttpURLConnection. Dans le code, j'établis une connexion, appelle les méthodes getOutputStream() et getInputStream() dans l'ordre. Ensuite, je déconnecte la connexion. Après cela, j'essaie d'obtenir des données qui ont été obtenues par la méthode getInputStream(), mais le compilateur rappelle NullPointerException.IOException: flux est fermé, NullPointerException avec HttpURLConnection se déconnecter
en code ci-dessous:
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();
}
}
}
Après les tentatives de débogage, Lorsque je déplace la ligne de déconnexion à la dernière ligne enfin module, tout sera ok. Mais je suis confus, ce qui arrive quand j'ai déjà attribué la valeur «inputstream» à «lecteur».
Merci beaucoup.
Avant la déconnexion, l'objet inputstream est déjà dans la variable 'lecteur'. Cependant, lorsque je débogue, la méthode reader.readLine() obtient la nullpointexception. – phinux
Mais vous n'avez rien lu, afin de lire la connexion devrait être ouverte parce que vous lisez en l'utilisant – user7294900