everyone。クラスHttpURLConnectionを使用してサーバーに接続する関数をコーディングしています。コードでは、接続を確立し、getOutputStream()メソッドとgetInputStream()メソッドを順番に呼び出します。次に、接続を切断します。この後、getInputStream()メソッドで取得したデータを取得しようとしますが、コンパイラはNullPointerExceptionを思い出させます。以下でIOException:ストリームが閉じている、HttpURLConnectionを使用したNullPointerExceptionの接続が切断されている
コード:私は最終的にモジュール内の最後の行に切断線を移動すると、デバッグしようとした後
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();
}
}
}
、すべてがOKになります。しかし、私は混乱しています。私はすでに 'リーダー'に 'インプットストリーム'の価値を託しています。
ありがとうございます。
接続を切断する前に、すでに入力ストリームオブジェクトを変数 'reader'に取得しています。しかし、私がデバッグすると、reader.readLine()メソッドはnullpointexceptionを取得します。 – phinux
しかし、あなたはそれを使用して読んでいるので、接続を開く必要があります読むために何かを読んでいない – user7294900