在一个web服务器的servlet中用ObjectInputStream读对象,该对象从另一服务器(b)的ObjectOutputStream输出,输出时经过调试是有数据的,正确的,但是在servlet中用ObjectInputStream读取时读不出来.具体如下:web服务器servlet:ObjectInputStream netIn = new ObjectInputStream(in);
Object o=netIn.readObject();
int code=(Integer)o;
System.out.println(code);
b服务器:
void sendMessage(int code,String message){
try {
out.writeObject(code);
//out.writeObject(null);
out.flush();
out.writeChar(' ');
out.flush();
out.writeUTF(message);
out.flush();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

}开始我用的是writeInt()方法,但出错,所以就让code(int型)自动装箱成Integer来传送,但还是接收不正确,
出错的信息如下:type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception java.lang.NumberFormatException: For input string: "srjava.lang.Integer鉅亣8Ivaluexrjava.lang.Number啲� 斷�xpgpw"
java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
java.lang.Integer.parseInt(Integer.java:447)
java.lang.Integer.parseInt(Integer.java:497)
servlet.Parse.parse(Parse.java:26)
servlet.SendAndReceive.doPost(SendAndReceive.java:41)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
servlet.ApplyServlet.doPost(ApplyServlet.java:33)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.14 logs.这个应该是反序列化时的问题吧?望高手解答

解决方案 »

  1.   

    Object o=netIn.readObject();
    int code=(Integer)o;
    你先把  o.toString(); 打印出来看看是什么,这里明显是 转换 int 错误嘛
      

  2.   

    问题应该出在发送方b服务器上面。
    Servlet中的InputStream所读取的,应该是Http协议中的包体部分。
    发送方,发送的数据,是用HttpConnection对象发送的数据么?
    如果是用Socket直接发送的数据,那必然是错的,因为,不符合Http协议。
      

  3.   

    你那样发送是有问题的       out.writeObject(code);
            out.flush();
            out.writeChar(' ');
            out.flush();
            out.writeUTF(message);
            out.flush();虽然有flush,但是接收端无法知道给的流里具体是什么,因为你又有对象,又有char,还有字符串-_-!
    建议一次性写过去!在发送端将code和message结合成一个字符串发送过去,在接收端再根据字符串拼接规则解析。
      

  4.   

    哈哈,你接受用objectInputstream   你发送用 的什么流啊,  协议是不同的呢,怎么读取呢