[applet] ecrire un objet (serialize) sur le serveur

Contenu du snippet

j'ai eu besoin de sauvegarder un objet serialisé dans un fichier a partir d'un applet java! et la solution qui consiste a mettre en place un servlet m'etais impossible et trop lourde! alors avec 2 methode et un petit fichier PHP cela est possible :

Source / Exemple :


//methode java qui envoi l'objet serialisé dans une requette HTTP POST sur le serveur!

  • public void saveList(){
*
  • ObjectOutputStream out;
  • BufferedReader reader;
  • HttpURLConnection cnx;
  • try{
  • // nom du fichier qui va recevoir l'objet serialisé a ecrire
  • URL url = new URL(getCodeBase(),"writeobject.php");
  • cnx = (HttpURLConnection) url.openConnection();
  • cnx.setRequestMethod("POST");
  • cnx.setDoInput(true);
  • cnx.setDoOutput(true);
  • cnx.connect();
*
  • out = new ObjectOutputStream(cnx.getOutputStream());
  • // objet a serialiser :
  • out.writeObject(monObjet);
  • reader = new BufferedReader(new InputStreamReader(cnx.getInputStream()));
  • String ligne;
  • while ((ligne = reader.readLine()) != null) {
  • System.out.println(ligne);
  • }
*
  • out.flush();
  • out.close();
  • reader.close();
  • cnx.disconnect();
  • }
  • catch(Exception e){
  • e.printStackTrace();
  • }
  • }
// fichier php qui recupere le contenu POST de la requete et qui l'ecrit dans un fichier :
  • <?php
*
  • // nom du fichier qui recevra l'objet serialisé
  • $fp = fopen("objectserialized.cmi","w");
  • /*
  • il faut activer cette option dans php.ini pour activer la
  • variable $HTTP_RAW_POST_DATA qui retourne l'entete RAW POST!
*
  • ; Always populate the $HTTP_RAW_POST_DATA variable.
  • always_populate_raw_post_data = On
*
  • */
  • fwrite($fp,$HTTP_RAW_POST_DATA);
  • fclose($fp);
*
  • ?>
// methode java qui va chercher le fichier ecrit par php et qui recrée lobjet :)
  • public Object loadList(){
  • Object cp = null;
  • ObjectInputStream in;
  • HttpURLConnection cnx;
  • try{
  • // ouverture du fichier qui contient l'objet serialisé
  • URL url = new URL(getCodeBase(),"objectserialized.cmi");
  • cnx = (HttpURLConnection) url.openConnection();
  • in = new ObjectInputStream(cnx.getInputStream());
  • // creation de l'objet (cast)
  • cp = (Object)in.readObject();
  • in.close();
  • cnx.disconnect();
  • }
  • catch(Exception e){
  • e.printStackTrace();
  • }
  • return cp;
  • }

Conclusion :


voila, seul la gestion des exceptions est a perfectionner!
et bien penser a editer le fichier php.ini pour permettre la capture RAW de l'entete http POST

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.