J2ME connection HTTP

J2ME connection HTTP - Java - Programmation

Marsh Posté le 27-04-2006 à 18:01:16    

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.

Reply

Marsh Posté le 27-04-2006 à 18:01:16   

Reply

Marsh Posté le 27-04-2006 à 19:07:46    

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

Reply

Marsh Posté le 27-04-2006 à 21:00:37    

arrau: n'imp.
jess100: flush()


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 27-04-2006 à 21:24:02    

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

Reply

Marsh Posté le 29-04-2006 à 15:42:00    

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

Reply

Marsh Posté le 30-04-2006 à 13:19:20    

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

Reply

Marsh Posté le 02-05-2006 à 16:35:11    

Avec un String ca ne marche pas non plus

Reply

Marsh Posté le 09-05-2006 à 16:14:51    

Personne peut m'aider?? :??:  

Reply

Marsh Posté le 09-05-2006 à 16:34:26    

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.
 

Reply

Marsh Posté le 22-07-2007 à 09:53:05    

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

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed