Мне нужно отправить объект с клиента на сервер, сериализовав его.
Это мой код:
HttpURLConnection con = null;
ObjectOutputStream out = null;
ObjectInputStream inputStream = null;
URL servlet = new URL("MY_URL");
con = (HttpURLConnection) servlet.openConnection();
con.setDoInput(true);
con.setDoOutput(true);
con.setUseCaches(false);
con.setDefaultUseCaches(false);
con.setRequestProperty("Content-type", "application/octet-stream");
con.setRequestMethod("POST");
out = new ObjectOutputStream(con.getOutputStream());
out.writeObject(myobject);
out.flush();
out.close();
inputStream = new ObjectInputStream(con.getInputStream());
inputStream.close();
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
// inputStream.close();
con.disconnect();
}
return true;
Теперь я могу добраться до сервлета и получить через него объект.
Единственная проблема в том, что как только я доберусь до этой линии:
inputStream = new ObjectInputStream(con.getInputStream());
Я получаю исключение StreamCorruptedException на стороне клиента. (на стороне сервера все работает отлично!)
И если я уберу эту строку, сервлет не будет запущен (я имею в виду doGet()
или doPost()
, не вызываемый в сервлете)
Что я делаю не так?
Это точная ошибка:
06-02 12:41:53.549: WARN/System.err(4260): java.io.StreamCorruptedException
06-02 12:41:53.549: WARN/System.err(4260): java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:2399)
06-02 12:41:53.549: WARN/System.err(4260): at java.io.ObjectInputStream.<init>(ObjectInputStream.java:447)
Спасибо
Ray