Я делаю два succssive звонки на мой сервлет от андроида таким образом:Почему OutputStream быть закрыт после того, как InputStream в андроида
//FIRST CONNECTION
URL url = new URL("http://172.16.32.160:8080/xyz/check_availability");
HttpURLConnection connection =(HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
ObjectOutputStream out=new ObjectOutputStream(connection.getOutputStream());
String a="xya";
String b="xsw";
out.writeObject(a);
out.flush();
ObjectInputStream in=new ObjectInputStream(connection.getInputStream());
String s=(String)
in.readObject();
in.close();
out.close();
Toast.makeText(getApplicationContext(), "1", Toast.LENGTH_LONG).show();
//SECOND CONNECTION
URL url1 = new URL("http://172.16.32.160:8080/xyz/check_availability");
HttpURLConnection connection1 = (HttpURLConnection)url1.openConnection();
connection1.setDoOutput(true);
ObjectOutputStream out1=new ObjectOutputStream(connection1.getOutputStream());
out1.writeObject(b);
out1.flush();
ObjectInputStream in1=new ObjectInputStream(connection1.getInputStream());
String str=(String)
in1.readObject();
in1.close();
out1.close();
Toast.makeText(getApplicationContext(), "2", Toast.LENGTH_LONG).show();
Приведенный выше код работает хорошо, потому что я закрыл OutputStream первого соединения после закрытия входного потока. Но если я закрыть OutputStream после отправки объекта, то второй входной поток генерирует исключение:
java.io.StreamCorruptedException
Почему должен OutputStream быть закрыт после закрытия InputStream?
ПРИМЕЧАНИЕ
Если кто-то знает фактический ответ или правильный причина, почему он не работает в Android, пожалуйста, ответьте. До тех пор я соглашусь с ответом, данным EJP, - что это ошибка в android.
Правильная причина уже дана. «Ошибка в Android». Учитывая факты и учитывая, что он работает в JRE, нет другого возможного объяснения. – EJP
@EJP: Да, это ошибка, как вы сказали. Я имел в виду, в чем причина этой ошибки. Я имею в виду, что андроид закрывает соединение, когда выходной поток закрыт или что-то еще происходит. – Ashwin
«андроид закрывает соединение, когда выходной поток закрыт». Да, видимо. – EJP