我這樣做,從機器人到我的servlet 2個succssive通話關閉:爲什麼要爲OutputStream來的InputStream後的Android
//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 2012-05-08 12:24:35
@EJP:是的,這是一個像你說的錯誤。我的意思是這個錯誤的原因是什麼。我的意思是,當outputstream關閉或其他事情發生時,android會關閉連接。 – Ashwin 2012-05-09 04:47:32
「輸出流關閉時android是否關閉連接」。是的,顯然。 – EJP 2012-05-09 10:34:18