HttpURLConnection连接问题

客户端如下:
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.HashMap;
import java.util.Map;

public class SentUpdate {
static public void main(String args[]){
try{

URL newURL = new URL("http://192.168.1.102:8080/hessianTest/AcceptUpdate");
HttpURLConnection conn = (HttpURLConnection) newURL.openConnection();
conn.setUseCaches(false);
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type","application/x-java-serialized-object");
OutputStream outStrm = conn.getOutputStream();
ObjectOutputStream objOutputStrm = new ObjectOutputStream(outStrm);
objOutputStrm.writeObject(new String("abc"));
objOutputStrm.flush();
objOutputStrm.close();
InputStream inStrm = conn.getInputStream();
inStrm.close();
}catch(MalformedURLException e){
System.err.print("malformedURLexception"+e);
}catch(IOException e){
System.err.print("IOException"+e);
}
}
}
服务器端如下
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**

  • Servlet implementation class for Servlet: GetSerlet
  • / public class AcceptUpdate extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet { / (non-Java-doc)
  • @see javax.servlet.http.HttpServlet#HttpServlet() */ public AcceptUpdate() { super(); }

/* (non-Java-doc)

  • @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { InputStream inStream = request.getInputStream(); ObjectInputStream objInStream = new ObjectInputStream(inStream); try { Object obj = objInStream.readObject(); String ss=(String) objInStream.readObject(); System.out.println(ss);

} catch (ClassNotFoundException e) {
e.printStackTrace();
}

}

}
但是为什么无法得到输出流呢,就是服务器端无法读到ss

你将objInStream读了两遍,第一次已经把流完了,第二次就读不出来了,会抛一个EOFException:

Object obj = objInStream.readObject();
String ss=(String) objInStream.readObject();

改成:
//Object obj = objInStream.readObject();//去掉这句
String ss=(String) objInStream.readObject();
System.out.println(ss);