服务器端代码:
在HttpServlet中的doPost(HttpServletRequest request, HttpServletResponse response)方法中:
ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(request.getInputStream()));(这一步特别容易出错,网上所留言的以及寻求答案的多为这一步,主要是方法位置,如果是doGet方法,我在使用过程中,也一直跑异常,java.io.EOFException,但是换成doPost后就没有了,不知道为什么)。
ObjectOutputStream out = new ObjectOutputStream(response.getOutputStream());
客户端:
String sMessage = "test";//此处是需要发送的可序列化的对象。
URL url = newURL("
http://localhost:8080/test/servlet");
URLConnection con = url.openConnection();
con.setDoInput(true);
con.setDoOutput(true);
con.setRequestProperty("Content-type", "application/octest-stream");
out = con.getOutputStream();
objStream = new ObjectOutputStream(out);
objStream.writeObject(sMessage);
objStream.flush();
InputStream in = con.getInputStream();
ObjectInputStream back = new ObjectInputStream(in);
back.readObject();
objStream.close();
back.close();
不知道为什么,必须要有后一部分的,即:必须从连接中获取一个流对象,然后才能触发写入的事件,如果不获取,则没有任何效果,没有研究,下一步再努力研究吧,现在突然对网络编程产生了很大兴趣,可惜啊,出差在外,忙着做项目。
希望有能解释上述原因的朋友不吝赐教。