2009-08-25 18 views
2

J'ai développé une application simple dans J2ME. L'application fait simplement HttpConnection et fait seulement la demande. Voici le code pour cela:L'application j2me ne fonctionne pas sur Téléphone Mobile

public void run() { 
    System.out.println("Inside saveData"); 
    HttpConnection hc = null; 
    OutputStream dout = null; 
    try { 
     System.out.println("custName = " + custName); 
     System.out.println("prodName = " + prodName); 
     System.out.println("qty = " + qty); 

     hc = (HttpConnection) Connector.open("http://www.sufalamtech.com/demo/mobile/test.php?custName=" + custName + "&prodName=" + prodName + "&qty=" + qty); 
     //hc = (HttpConnection) Connector.open("http://www.sufalamtech.com/demo/mobile/test.php?custName=Custtt51&prodName=Proddd52&qty=53"); 
     //hc = (HttpConnection) Connector.open("http://www.sufalamtech.com/demo/mobile/test.php?custName="+custName+"&prodName="+prodName+"&qty="+qty); 

     hc.setRequestProperty("User-Agent", "Profile/MIDP-2.1 Configuration/CLDC-1.1"); 
     hc.setRequestMethod(HttpConnection.GET); 
     dout = hc.openOutputStream(); 

    } catch (Exception e) { 
     System.out.println("Error... = " + e); 
    } finally { 
     try { 
      if (dout != null) { 
       dout.close(); 
      } 

      if (hc != null) { 
       hc.close(); 
      } 
     } catch (Exception e2) { 
      e2.printStackTrace(); 
     } 
    } 

Cela fonctionne très bien sur PC (simulateur). Mais quand je déploie un fichier .jar sur mon Nokia 5310, il ne renvoie rien de HttpConnection.

En fait, je ne veux pas recevoir de données de l'URL. Je veux juste envoyer une requête à mon URL. Sinon sera fait par cette URL seulement ... Mon application fonctionne bien dans Nokia 3110 Classic. Mais il ne fonctionne pas sur Nokia 5310. Avez-vous une suggestion?

Répondre

1

Le problème est que sur certaines implémentations, votre application peut même pas envoyer la demande jusqu'à ce que vous avez invoqué la méthode connection.getResponseCode(). Essayez d'invoquer la méthode getResponseCode() avant d'ouvrir InputStream ou OutputStream

+0

Bonjour Ram. J'ai essayé d'appeler une fonction getResponseCode(). Mais encore mon problème est le même que je ne peux pas obtenir une exécution correcte dans Nokia 5310. Mais je reçois un résultat parfait dans Nokia 3110 Classic. Plz suggère une solution si vous avez ... Merci .. – Nirmal

+0

# 1 N'essayez pas non plus de surcharger l'en-tête User-Agent. Parce que certains périphériques sont connus pour lever des exceptions lorsque vous définissez l'en-tête User-Agent. Essayez de commenter cette ligne. # 2 Lorsque vous faites une demande GET vous ouvrez normalement un InputStream et non un OutputStream – Ram

+0

Bonjour Ram, merci pour votre réponse .. J'ai fait les deux changements, mais toujours pas de sortie correcte .. Je ne sais pas wt faire ... est-il de toute façon déboguer l'application directement dans le mobile? – Nirmal

1

Vous devez utiliser le flux d'entrée de la connexion, pas le flux de sortie. Quelque chose comme ça (non testé).

if (hc.getResponseCode() == HttpConnection.HTTP_OK) { 
     int length = (int)hc.getLength(); 
     InputStream is = hc.openInputStream(); 
     content = new byte[length]; 
     int read = 0; 
     while (read < length) { 
      int r = is.read(content, read, length - read); 
      if (r < 0) { 
       break; 
      } 
      read += r; 
     } 
     is.close(); 
    } 
    hc.close(); 
+0

En fait, je ne veux pas recevoir de données de l'URL. Je veux juste envoyer une requête à mon URL. Sinon, ce sera fait par cette URL seulement ... Mon application fonctionne très bien dans Nokia 3110 Classic. Mais ne fonctionne pas sur Nokia 5310. Avez-vous une suggestion plz? – Nirmal

+0

Vous êtes sûr que ce n'est pas seulement un problème de permission? Le démarrage d'une connexion de données est souvent restreint. Mon téléphone ne cesse de me demander à chaque fois que je me connecte. – wvdschel

+0

Oui, ce n'est pas un problème de permission. En fait l'application fonctionne sur Nokia 3110 parfaitement .. Donc, il doit y avoir un autre problème .. Plz suggérer des solutions si vous avez .. – Nirmal

0

J'ai le même problème sur Nokia E Series (E51) le code fonctionne parfaitement dans Sun Simulator, mais essayez de définir le point d'accès de votre application/MIDlet defalut dans le Gestionnaire d'applications, cela pourrait réduire votre problème. Allez à Installations -> App. Gestionnaire -> Ouvrir le nom de votre application, Modifier le filtrage -> Choisir le point d'accès pour vous App