Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1452 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  J2ME connection HTTP

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

J2ME connection HTTP

n°1355386
jess100
Posté le 27-04-2006 à 18:01:16  profilanswer
 

Bonjour à tous!
 
Voila je dois développer une appli qui récupère des informations à aprtir d'enregistrements sur le téléphone et les envoie à une servlet. J'ai choisi d'utiliser une connection Http. Voici la fonction de ma midlet qui fait la connection avec le serveur :
 
 
public void envoiCartesPost(List l){
                               HttpConnection c = null;
                               DataOutputStream d = null;
                               DataInputStream in = null;
                               TextBox myTextBox = null;
                               StringBuffer buff = new StringBuffer();
                               
                               try{
                                               c = (HttpConnection)Connector.open(urlServlet,Connector.READ_WRITE);
                                               c.setRequestMethod(HttpConnection.POST);
                                               System.out.println("connection" );
                                               c.setRequestProperty("User-Agent", "Profile/MIDP-1.0 Configuration/CLDC-1.0" );
                                               c.setRequestProperty("Content-Language", "en-US" );
                                               c.setRequestProperty( "Accept", "application/octet-stream" );
                                               c.setRequestProperty( "Connection", "close" );
 
                                               Card[] cards = manager.getCards();
 
                                               byte postmsg[];
                                               int j;
                                               for (int i=0;i<l.size();i++){
                                                               if(l.isSelected(i)){
                                                                              postmsg = (cards[i].getCardID()).getBytes();
                                                                              c.setRequestProperty("Content-Length", Integer.toString(postmsg.length));
                                                                              d = c.openDataOutputStream();
                                                                               
                                                                              for (j=0;j<postmsg.length;j++){
                                                                                              d.write(postmsg[j]);
                                                                              }
 
                                                               }
 
                                               }                              
                                               d.flush();
                                               in = c.openDataInputStream();
                                               int car;
                                                while ((car=in.read()) != -1){
                                                               buff.append((char)car);
                                                               System.out.println((char)car);
                                               }
                                               myTextBox = new TextBox("Contenu:",buff.toString(),1024,0);
 
                                               if (in != null) in.close();
                                               if (d != null) d.close();
                                               if (c != null) c.close();
         
                                               display.setCurrent(l);
                               }
                               catch (IOException ioe){
                                               display.setCurrent(new Alert("", "Connection au serveur impossible", null, AlertType.WARNING), getDisplayList());                                                                                              
                               }
                               
                               
                }
 
Et voici la servlet :
 
public class PiBiServlet extends HttpServlet {
     
    /** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
         
        DataInputStream dis = new DataInputStream(request.getInputStream());  
        StringBuffer b = new StringBuffer();
        int ch;
        while ((ch = dis.read()) != -1) {
            b.append((char)ch);
        }
        System.out.println(b.capacity());
        System.out.println(b.toString());
        response.setContentType("text/html" );
        PrintWriter myOutPut = response.getWriter();
        myOutPut.println("message"+b.toString());
        myOutPut.close();
         
    }
 
La chaine b.toString() ne s'affiche pas. Pourtant il semble que les données sont bien récupérées puisque je peux afficher le résultat sur la console.
 
Pouvez-vous m'aider??
Merci d'avance.

mood
Publicité
Posté le 27-04-2006 à 18:01:16  profilanswer
 

n°1355441
arrau
Ludwig von 54
Posté le 27-04-2006 à 19:07:46  profilanswer
 

Essaye myOutPut.println(new String(b));

n°1355513
the real m​oins moins
Posté le 27-04-2006 à 21:00:37  profilanswer
 

arrau: n'imp.
jess100: flush()


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°1355522
arrau
Ludwig von 54
Posté le 27-04-2006 à 21:24:02  profilanswer
 

Des fois je ferais mieux de pas l'ouvrir :sweat:

n°1356504
jess100
Posté le 29-04-2006 à 15:42:00  profilanswer
 

J'ai déja essayé flush() ca ne marche pas non plus :-(

n°1356736
byakugan
cachaça nao è agua !!
Posté le 30-04-2006 à 13:19:20  profilanswer
 

normalement t'a pas besoin d'appeler le toString pour imprimer. le probleme ne vient pas de la mais bon. essaye d'utiliser un String au lieu de StringBuffer

n°1357908
jess100
Posté le 02-05-2006 à 16:35:11  profilanswer
 

Avec un String ca ne marche pas non plus

n°1362545
jess100
Posté le 09-05-2006 à 16:14:51  profilanswer
 

Personne peut m'aider?? :??:  

n°1362564
Bidem
Posté le 09-05-2006 à 16:34:26  profilanswer
 

Code :
  1. for (int i=0;i<l.size();i++){
  2.   ...
  3.   c.setRequestProperty("Content-Length", Integer.toString(postmsg.length));
  4.   ...
  5. }


 
Hummm, le header Content-length est sensé être égal à la taille totale du corps de la requette donc le set doit être à l'extérieur de la boucle.
 

n°1589790
carabuck
Posté le 22-07-2007 à 09:53:05  profilanswer
 

j'espère que ce site t'aidera: http://j2me.over-blog.fr


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  J2ME connection HTTP

 

Sujets relatifs
Requette http sur une page web[PHP] connection imprimante windows
[J2ME Polish] Essai du sample de testconnection sql de free
Upload de gros fichier (local) par HTTP[J2ME] lancer un appel depuis une appli
[J2ME] pb refresh lors du passage de page en pageconnection a une base access avec visual c++
[J2ME] Attendre la fin d'un Threadconnection à la BD Oracle via JSP
Plus de sujets relatifs à : J2ME connection HTTP


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR