我试图创建一个Android应用程序,它将一个序列化对象从手机发送到一个servlet,该对象的内容是来自用户的输入,我将使用hibernate将其存储在数据库中.我认为问题在于代码所在的对象的序列化和反序列化.如果有人可以帮助我会非常感激.
用户实现可序列化接口的类
客户
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(); } } }
最佳答案如建议的那样,使用XML或JsON.您可以为AndroID from this blog修补XStream,以便将对象序列化为XML. 总结
以上是内存溢出为你收集整理的java – 使用HTTP客户端将序列化对象从Android发送到servlet全部内容,希望文章能够帮你解决java – 使用HTTP客户端将序列化对象从Android发送到servlet所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)