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

  FORUM HardWare.fr
  Programmation
  Java

  [J2ME] Transfert Midlet - serveur http

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[J2ME] Transfert Midlet - serveur http

n°1317802
the nordco​re
Awesome
Posté le 03-03-2006 à 14:27:50  profilanswer
 

Bonjour,
voila je poste mon probleme car je n'arrive pas le resoudre.
 
Je dois creer un midlet et un serveur. Le midlet doit pouvoir demander un fichier sur le serveur, et l'enregistrer dans un dossier specifique. Le protocole utilise est HTTP.
 
le midlet envoie bien la requete, le serveur la recoit et la traite correctement. Ensuite il envoie le fichier qui est alors sous la forme d'un tableau d'octets. Le probleme que j'ai, c'est que le midlet recoit un InputStream, qui a -1 comme taille..
 
Si quelqu'un sait d'ou cela peut provenir merci d'avance!!


---------------
0x53 0x61 0x6C 0x65 0x47 0x65 0x65 0x6B
mood
Publicité
Posté le 03-03-2006 à 14:27:50  profilanswer
 

n°1317815
Bidem
Posté le 03-03-2006 à 14:39:34  profilanswer
 

Citation :

le midlet recoit un InputStream, qui a -1 comme taille...


 
Humm pour moi la notion de taille n'existe pas pour un InputStream, qu'est ce que tu mesures ?
 

Citation :

Si quelqu'un sait d'ou cela peut provenir merci d'avance!!


Montre nous ce que tu as fait, ma boule de cristal est cassée :p

Message cité 1 fois
Message édité par Bidem le 03-03-2006 à 14:39:53
n°1317831
the nordco​re
Awesome
Posté le 03-03-2006 à 14:54:32  profilanswer
 

Bidem a écrit :

Citation :

le midlet recoit un InputStream, qui a -1 comme taille...


 
Humm pour moi la notion de taille n'existe pas pour un InputStream, qu'est ce que tu mesures ?
 

Citation :

Si quelqu'un sait d'ou cela peut provenir merci d'avance!!


Montre nous ce que tu as fait, ma boule de cristal est cassée :p


 
 
 
voici le midlet
 

Code :
  1. try
  2.        
  3.          {
  4.             System.out.println("on ouvre une connection avec le serveur" );
  5.             hc = (HttpConnection)Connector.open("http://localhost:60000/"+a);
  6.        
  7.        
  8.            //http.setRequestMethod(HttpConnection.GET);           
  9.             System.out.println("connected with GET method!" );
  10.          
  11.             System.out.println("Input stream open" );
  12.             System.out.println("Msg: " + hc.getResponseMessage());
  13.             System.out.println("Code: " + hc.getResponseCode());
  14.        
  15.          
  16.        
  17.             if (hc.getResponseCode() == HttpConnection.HTTP_OK)
  18.             {
  19.                System.out.println("Trying to open connection" );
  20.            
  21.                if(hc  == null ){
  22.                   System.out.println("Http connection is out." );
  23.                }
  24.                          
  25.                //int leng= (int) hc.getContentLength();
  26.                //System.out.println("longueur de hc :"+leng);
  27.              
  28.                try {
  29.                   is = hc.openInputStream();
  30.                   System.out.println("Connection to receive open" );
  31.              
  32.                
  33.              
  34.              
  35.                   System.out.println(is);
  36.                  
  37.                   len = is.available();
  38.              
  39.              
  40.                   System.out.println("Size of inputstream :"+len);
  41.                   if(len == -1)
  42.                   {
  43.                      System.out.println("File not ok" );
  44.                   }
  45.              
  46.              
  47.                  
  48.                
  49.                   byte data[] = new byte[len];
  50.                   is.read(data);
  51.              
  52.              
  53.              
  54.                   System.out.println("Nombre de bytes recus : "+len);
  55.                }
  56.                    catch (IOException ioe) {
  57.                   }
  58.             }   
  59.             else
  60.             {
  61.                System.out.println("unable to open data" );
  62.             }
  63.          }
  64.        
  65.          finally
  66.          {
  67.             if (is != null)
  68.                is.close();   
  69.             if (hc != null)
  70.                hc.close();}


 
 
et voici la partie serveur

Code :
  1. //création du socket serveur  
  2.          try{
  3.             socketL = new ServerSocket (portserver);           
  4.          }
  5.              catch (IOException ioe)
  6.             {
  7.                System.out.println("exception lors de la création du socket serveur " );
  8.                System.exit(0);
  9.             }
  10.      
  11.      
  12.      
  13.         //boucle infinie
  14.          while (true)
  15.          {
  16.          //création du socket service
  17.             try  {          
  18.                socketS = socketL.accept();
  19.                System.out.println("Socket service open" );
  20.             }
  21.            
  22.                 catch (IOException io)
  23.                {
  24.                   System.out.println("Exception lors de la création du socket service "+io);
  25.                   System.exit(0);
  26.                }
  27.               //flux entrée
  28.             try{
  29.                fluxEntree = new BufferedReader ( new InputStreamReader ( socketS.getInputStream()));
  30.                System.out.println("Incoming stream" );
  31.             }
  32.                 catch(IOException ioe)
  33.                {
  34.                   System.out.println("mauvais flux 1" );
  35.                   System.exit(0);
  36.                }
  37.        
  38.                  
  39.            //file name
  40.             try{
  41.                text = fluxEntree.readLine();
  42.                System.out.println("File name with protocol to send : "+text);
  43.            
  44.             }
  45.                 catch (IOException i)
  46.                {
  47.                   System.out.println("mauvais flux 3" );
  48.                   System.exit(2);
  49.                }
  50.                    
  51.          //delete parameter of file name
  52.             char temp1[] = new char[text.length()];
  53.             temp1=text.toCharArray();
  54.             int nb = (text.length())-14;
  55.             String temp2 = String.copyValueOf(temp1,5,(int)nb);
  56.             System.out.println("Correct file name : "+temp2);
  57.        
  58.              
  59.            //File to byte
  60.            
  61.             File fichier= new File(temp2);
  62.             int leng = (int)fichier.length();
  63.             System.out.println("Size file : "+leng);
  64.             byte buf[] = new byte[leng];
  65.        
  66.             try{
  67.                InputStream iStr = new FileInputStream(fichier);
  68.              
  69.              // Read in the bytes  
  70.                int offset = 0;
  71.            
  72.                iStr.read(buf, offset, buf.length);
  73.                System.out.println("Array size : "+buf.length);
  74.                          
  75.             // Close the input stream   
  76.                iStr.close();
  77.             }
  78.                 catch(IOException iooee){}
  79.                  
  80.        
  81.          //envoie du fichier
  82.             try{
  83.                fluxSortie = new PrintStream ( socketS.getOutputStream());
  84.                System.out.println(buf);
  85.                fluxSortie.println("HTTP/1.1 200 OK" );
  86.            //    fluxSortie.println("Content-type : text/plain" );
  87.               // fluxSortie.println("Content-length : "+leng);
  88.              
  89.            
  90.              // fluxSortie.println("Connection : close" );   
  91.                fluxSortie.println("" );
  92.                fluxSortie.write(buf,0,leng);
  93.              
  94.              
  95.              
  96.             }
  97.                 catch (IOException ioex)
  98.                {
  99.                   System.out.println("mauvais flux 4" );
  100.                   System.exit(3);
  101.                }
  102.             System.out.println("\n reponse HTTP_OK send \n" );
  103.             System.out.println("Sending file with output stream" );
  104.        
  105.             try{
  106.                socketS.close();
  107.             }
  108.                 catch(IOException io){
  109.                   System.out.println("Error with socket" );
  110.                }
  111.        
  112.             System.out.println("Connection Close ;" );
  113.          }


 
 
j'espere que tu ty retrouveras ;)
merci en tout cas


---------------
0x53 0x61 0x6C 0x65 0x47 0x65 0x65 0x6B
n°1317846
the nordco​re
Awesome
Posté le 03-03-2006 à 15:09:06  profilanswer
 

InputStream.avalaible()  ca te retourne un int et ca te donne la taille
 
dans la theorie, si cette valeur est egale a -1, cela veut dire qu'il n'y arien dans mon InputStream.. pourtant jenvoie bien un tableau d'octet..
 
je me demamde s'il n'ya pas d'erreur de "communication" entre le serveur et le midlet..


---------------
0x53 0x61 0x6C 0x65 0x47 0x65 0x65 0x6B
n°1317897
Bidem
Posté le 03-03-2006 à 15:55:58  profilanswer
 

Tu ne flush pas ton flux de sortie, ça peut venir de là

n°1317929
the nordco​re
Awesome
Posté le 03-03-2006 à 16:12:26  profilanswer
 

ca ne change rien.. :(


---------------
0x53 0x61 0x6C 0x65 0x47 0x65 0x65 0x6B
n°1319247
the nordco​re
Awesome
Posté le 06-03-2006 à 10:57:47  profilanswer
 

:bounce:


---------------
0x53 0x61 0x6C 0x65 0x47 0x65 0x65 0x6B
n°1321099
wapcamer
Posté le 08-03-2006 à 16:57:36  profilanswer
 

Tu as vérifié ton abonnement GPRS?
souvent le java possède son propre point d'accès, différent des AP du tel.
En plus ton forfait doit être un forfait DATA, et pas uniquement WAP GPRS(p.ex. avec mon forfait multimédia illimité chez bouygues, je px asp utiliser les midlets communiquantes, par contre avec Orange World pas de pb). De plus, c'est pas pq tu as l'icone "G" qui s'affiche que la connexion s'est bien réalisée.
 
En plus du coté de ton serveur, tu dois mettre une petite routine qui log toutes les interrogations; de cette façon tu sais instantannément si ton serveur recoit la requete de la midlet ou pas.
 
Effectivement qd la comm ne s'établit pas, tu recois -1 pour le nb d'octets lus.
 


---------------
Voir les RAW sous Android: https://market.android.com/details? [...] .RawVision Blog Photo: http://photouch.me Applications mobiles: http://caketuzz.com Wapcam Project: http://wapcam.mobi
n°1321131
wapcamer
Posté le 08-03-2006 à 17:09:05  profilanswer
 

par ailleurs je te recommande de tester tes applis séparément:
ta midlet tu testes avec un vrai serveur web et sur le port 80.
ton serveur tu testes avec Firefox et le tres utile plugin "live http headers"
 
tu as des méthodes, je crois, qui s'appliquent à la socket pour définir le sens des flux, genre shutdownOutput() ; essaye de fermer et ouvrir les bons flux, mais un seul à la fois (p.ex d'abord entrant pr récupérer la requete, puis sortant pour émettre la réponse).
 
 :hello:  
 


---------------
Voir les RAW sous Android: https://market.android.com/details? [...] .RawVision Blog Photo: http://photouch.me Applications mobiles: http://caketuzz.com Wapcam Project: http://wapcam.mobi
n°1322599
the nordco​re
Awesome
Posté le 10-03-2006 à 11:34:43  profilanswer
 

merci !!


---------------
0x53 0x61 0x6C 0x65 0x47 0x65 0x65 0x6B

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

  [J2ME] Transfert Midlet - serveur http

 

Sujets relatifs
Function mail() et serveur smtp perso[J2ME] Bluetooth, probleme avec startInquiry()
[C# hosting] QQ1 connait http://www.aspspider.comimporter un base access dans SQL serveur 2005 express
librairie inexistance sous J2ME[J2ME] Reconstituer un fichier a partir d'un byte[ ]
Transfert de ma base de donnéesRequete http via un document excel
Se connecter à un serveur sql 2005 avec un client ayant sql server 200Comment faire avec serveur ne gérant pas le php?
Plus de sujets relatifs à : [J2ME] Transfert Midlet - serveur http


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