【发布时间】:2012-03-30 21:45:55
【问题描述】:
我正在以这种方式从 android 对我的 servlet 进行两次连续调用:
//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();
上面的代码运行良好,因为我在关闭输入流后关闭了第一个连接的输出流。但是如果我在发送对象后关闭输出流,第二个输入流会抛出异常:
java.io.StreamCorruptedException
为什么关闭输入流后还要关闭输出流?
注意
如果有人知道它在 Android 中不起作用的实际答案或正确原因,请回答。到那时我会接受EJP给出的答案——这是android中的一个错误。
【问题讨论】:
-
已经给出了正确的理由。 'Android 中的错误'。鉴于事实并考虑到它在 JRE 中有效,没有其他可能的解释。
-
@EJP :是的,就像你说的那样,这是一个错误。我的意思是这个错误的原因是什么。我的意思是当输出流关闭或发生其他事情时,android是否会关闭连接。
-
“当 outputstream 关闭时,android 是否关闭连接”。是的,显然。
标签: java android inputstream outputstream