2009-09-30 19 views
2

J'utilise ce code pour connecter Servlet. Application mobile lorsque vous essayez d'accéder à Internet.Une erreur d'application se produit dans Nokia 6300

Le message suivant apparaît dans mobile. "Autoriser l'accès réseau oui ou non"

Si je clique sur "non" pour ce message dans Nokia 6300 "Erreur de l'application" Avertissement apparaîtra et il fermera l'application automatiquement.

J'ai essayé d'autres mobiles Nokia comme N70 et N72. Mobile ne montrera pas "Erreur d'application".

Est-ce un problème de Mobile ou de codage?

Existe-t-il un moyen efficace de connecter Servlet à l'aide de http?

public static InputStream getDataInputStream(String url, String request) 
{ 
    HttpConnection httpConnectionObj = null; 

    OutputStream dataOutputStreamObj = null; 

    try { 
     httpConnectionObj = (HttpConnection) Connector.open(url, Connector.READ_WRITE); 

     httpConnectionObj.setRequestMethod(HttpConnection.POST); 

     dataOutputStreamObj = httpConnectionObj.openOutputStream(); 

     dataOutputStreamObj.write(request.getBytes()); 

     dataOutputStreamObj.close(); 

     return httpConnectionObj.openInputStream(); 

    } catch (javax.microedition.io.ConnectionNotFoundException cnfe) { 
     //Alert 
    } catch (Exception ex) { 
     //Alert 
    } finally { 
     try { 
      if (httpConnectionObj != null) { 
       httpConnectionObj.close(); 
       httpConnectionObj = null; 
      } 

     } catch (IOException ex) { 
      ex.printStackTrace(); 
     } 

    } 
    return null; 
} 
+0

Cela me semble être un problème de codage. Essayez d'attraper Throwable au lieu d'Exception pour voir quelle erreur se produit réellement – Ram

Répondre

0

Je ne sais pas si cela peut aider, mais essayez de fermer le flux de sortie avant HttpConnection en bloc finally:

} finally { 
     try { 
      if (dataOutputStreamObj != null) 
       dataOutputStreamObj.close(); 
      dataOutputStreamObj = null; 

      if (httpConnectionObj != null) 
       httpConnectionObj.close(); 
      httpConnectionObj = null; 

     } catch (IOException ex) { 
      ex.printStackTrace(); 
     } 
    } 
2

Il n'y a pas de bonne façon d'extraire java.lang.Throwable.printStackTrace() sur un Nokia 6300 puisqu'il est Téléphone Series40.

Le problème avec la boîte de dialogue d'autorisation n'a rien à voir avec votre code. Vous devez être conscient du modèle de sécurité MIDP afin de résoudre ce problème.

Un téléphone donné a plusieurs domaines de sécurité codés dans son microprogramme par le fabricant du téléphone.

Dans chaque domaine, plusieurs options permettent de restreindre l'accès à une API sensible. Lorsque vous installez un MIDlet, le téléphone décide du domaine auquel il appartient en fonction de qui approuve le certificat avec lequel vous l'avez signé. (peut être non signé, tiers de confiance, opérateur, constructeur ...)

Lorsque vous exécutez le MIDlet, chaque fois qu'il tente d'utiliser une API restreinte, l'option correspondante est appliquée. (Pourrait être toujours refuser, demander à l'utilisateur à chaque fois, demander à l'utilisateur une seule fois, toujours autoriser).

Différentes API restreintes peuvent avoir différentes options dans le même domaine.

Il y a donc plusieurs explications possibles à votre problème:

  • Vous avez signé le MIDlet différemment pour 6300 et N70.
  • Les domaines de sécurité sont différents sur 6300 et n70.
  • L'option de restriction de la connexion HTTP est différente sur 6300 et N70.
  • L'opérateur de réseau mobile est différent sur 6300 et N70.