java.io.StreamCorruptedException: invalid stream header
843841Oct 5 2004 — edited Oct 5 2004Hi,
I created an example with an applet and a servlet. The applet send an object to the servlet and the servlet send the same object with some modifies in its data.
Now the problems is : when the applet read the object sent by servlet i get this exception : java.io.StreamCorruptedException: invalid stream header, why ?
This is the code the applet:
----------------------------------------------------------------------------------------------------------------
// send data to servlet
// obj is the object to send
private void inviaDati(Socket s,DatiApplet obj)
throws IOException
{
ObjectOutputStream out = null;
DataOutputStream dataout = null;
ByteArrayOutputStream buffer = null;
StringBuffer sb = null;
byte[] serobj = null;
buffer = new ByteArrayOutputStream();
out = new ObjectOutputStream(buffer);
out.writeObject(obj);
serobj = buffer.toByteArray();
sb = new StringBuffer();
sb.append("POST ");
sb.append(percorsoServlet);
sb.append(" HTTP/1.0\r\nUser-Agent: JavaObjectTunnel\r\n");
sb.append("Content-Type: application/java-object\r\n");
sb.append("Content-Length: ");
sb.append(serobj.length);
sb.append("\r\n\r\n");
dataout = new DataOutputStream(s.getOutputStream());
dataout.write(sb.toString().getBytes());
dataout.write(serobj);
dataout.write("\r\n".getBytes());
}
// read data from servlet
private DatiApplet leggiDati(Socket s)
throws StreamCorruptedException,ClassNotFoundException,IOException
{
DatiApplet obj = null;
ObjectInputStream in = null;
in = new ObjectInputStream(new DataInputStream(s.getInputStream()));
obj = (DatiApplet)in.readObject();
return obj;
}
----------------------------------------------------------------------------------------------------------------
This is the code the servlet:
----------------------------------------------------------------------------------------------------------------
// read data from applet
// return object sent
private DatiApplet leggiDatiDaApplet(HttpServletRequest request)
throws StreamCorruptedException,ClassNotFoundException,IOException
{
DatiApplet obj = null;
ObjectInputStream in = null;
in = new ObjectInputStream(new DataInputStream(request.getInputStream()));
obj = (DatiApplet)in.readObject();
return obj;
}
private void inviaDatiVersoApplet(HttpServletResponse response,DatiApplet obj)
throws IOException
{
ObjectOutputStream out = null;
DataOutputStream dataout = null;
ByteArrayOutputStream buffer = null;
byte[] serobj = null;
buffer = new ByteArrayOutputStream();
out = new ObjectOutputStream(buffer);
out.writeObject(obj);
serobj = buffer.toByteArray();
response.setContentType("application/*");
response.setContentLength(serobj.length);
dataout = new DataOutputStream(response.getOutputStream());
dataout.write(serobj);
}
----------------------------------------------------------------------------------------------------------------
Thanks
Fulvia