java– 使用HTTP客户端将序列化对象从Android发送到servlet

java– 使用HTTP客户端将序列化对象从Android发送到servlet,第1张

概述我试图创建一个Android应用程序,它将一个序列化对象从手机发送到一个servlet,该对象的内容是来自用户的输入,我将使用hibernate将其存储在数据库中.我认为问题在于代码所在的对象的序列化和反序列化.如果有人可以帮助我会非常感激.用户实现可序列化接口的类客户 public class Adduser extends Activity imp

我试图创建一个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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1139634.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存