Envío de un objeto serializado de Android a un servlet utilizando cliente HTTP

He intentado crear una aplicación de android que envía un objeto serialzed del teléfono a un servlet el contenido del objeto es la entrada del usuario que almacenaré en una base de datos usando hibernate. Creo que el problema está en torno a la serialización y deserialización del objeto del código está por debajo. Si alguien pudiera ayudarme, sería muy agradecido.

Ps la clase El usuario implementa la interfaz serializable

cliente

public class Adduser extends Activity implements OnClickListener { EditText uname; EditText password; EditText rating; EditText date; Button add; User user; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); uname = (EditText) findViewById(R.id.Usernamei); password = (EditText) findViewById(R.id.passwordi); rating = (EditText) findViewById(R.id.ratingi); date = (EditText) findViewById(R.id.datei); add = (Button) findViewById(R.id.Adduser); user = new User(); add.setOnClickListener(this); } @Override public void onClick(View v) { user.setusername(uname.getText().toString()); user.setpassword(password.getText().toString()); user.setdate(date.getText().toString()); user.setrating(rating.getText().toString()); HttpClient httpClient = new DefaultHttpClient(); ObjectOutput out; try{ String url = "MY URL goes here"; HttpPost post = new HttpPost(url); //Serialisation of object ByteArrayOutputStream bos = new ByteArrayOutputStream() ; out = new ObjectOutputStream(bos) ; out.writeObject(user); //puts bytes into object which is the body of the http request post.setHeader(new BasicHeader("Content-Length", "" + bos.toByteArray().length)); ByteArrayEntity barr = new ByteArrayEntity(bos.toByteArray()); //sets the body of the request post.setEntity(barr); out.close(); //executes request and returns a response HttpResponse response = httpClient.execute(post); } catch (IOException e) { Log.e( "ouch", "!!! IOException " + e.getMessage() ); } uname.setText(String.valueOf("")); password.setText(String.valueOf("")); rating.setText(String.valueOf("")); date.setText(String.valueOf("")); } } Server side public class Adduser extends HttpServlet { //logger for properties file //private static Logger logger = Logger.getLogger(Adduser.class); public void doPost (HttpServletRequest request, HttpServletResponse response) throws ServletException { //test //logger.warn("this is a sample log message."); String usern = null; String password = null; String rating = null; String date = null; InputStream in; try { //gets http content body byte array should be on the stream in = request.getInputStream(); //int bytesToRead; //bytesToRead = Integer.parseInt(request.getHeader("Content-Length")); //reads inputream contents into bytearray int bytesRead=0; int bytesToRead=1024; byte[] input = new byte[bytesToRead]; while (bytesRead < bytesToRead) { int result = in.read(input, bytesRead, bytesToRead - bytesRead); if (result == -1) break; bytesRead += result; } //passes byte array is passed into objectinput stream ObjectInputStream inn = new ObjectInputStream(new ByteArrayInputStream(input)); User users = null; try { //object is read into user object and cast users = (User)inn.readObject(); } catch (ClassNotFoundException e1) { // TODO Auto-generated catch block System.out.println(e1.getMessage()); } in.close(); inn.close(); //contents of object is put into variables to be passed into database usern = users.getusername(); password = users.getpassword(); rating = users.getrating(); date = users.getdate(); } catch (IOException e2) { // TODO Auto-generated catch block System.out.println(e2.getMessage()); } Session session = null; try{ SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); session = sessionFactory.openSession(); //Create new instance of Contact and set Transaction tx = session.beginTransaction(); Userr user = new Userr(); user.setusername(usern); user.setpassword(password); user.setrating(rating); user.setdate(date); session.save(user); tx.commit(); }catch(Exception e){ System.out.println(e.getMessage()); }finally{ // Actual contact insertion will happen at this step session.flush(); session.close(); } } } 

Como se sugiere, utilice XML o JSON. Usted puede obtener XStream parcheado para Android desde este blog con el fin de serializar sus objetos a XML.

No utilice la serialización entre arquitecturas. Utilice JSON, XML o cualquier otra cosa que sea neutral en cuanto a la arquitectura.

En segundo lugar la sugerencia de XStream. Es una API muy agradable y fácil. No me gustan los formatos de serialización XML o JSON porque son basados ​​en texto. Para un formato de serialización más compacto, pruebe ProtoBuf de Google.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.