2010-07-23 7 views
0

je suis en utilisant le code suivant pour établir une connexion Httpsconnexion HTTPS

HttpsConnection httpConnector = null; 
    InputStream in = null; 
    Document doc ; 
    String content = ""; 

      try 
       { 
       httpConnector = (HttpsConnection)Connector.open(url,Connector.READ_WRITE); 
        httpConnector.setRequestMethod(HttpConnection.GET) ; 
        in = httpConnector.openInputStream(); 
        byte[] data = new byte[in.available()]; 
        int len = 0; 
        int size = 0; 
        StringBuffer raw = new StringBuffer(); 
         while (-1 != (len = in.read(data))) { 
          raw.append(new String(data, 0, len)); 
          size += len; 
         } 
         content = raw.toString().trim(); 
           } 
        catch(Exception ex) 
        { 
         ex.printStackTrace(); 
         return false; 
        } 
        try{ 
        in.close(); 
        in =null; 
        httpConnector.close(); 
        httpConnector =null; 

      }catch(Exception ex) 
      { 
       Dialog.alert("Error:" + ex.getMessage()); 
       return false; 

      } 
      } 

je pense que je suis en mesure d'établir la connexion, mais les valeurs ne sont pas à venir. Je teste sur simulateur, je ne l'ai pas testé sur l'appareil

+0

Je suis capable de récupérer la valeur en utilisant httpconnection en utilisant le même code – rupesh

Répondre

1

Je pense que votre erreur est dans la ligne suivante:

byte[] data = new byte[in.available()]; 

La méthode available() renvoie uniquement combien d'octets sont immédiatement disponibles pour la lecture de la inputstream , mais vous l'utilisez pour initialiser la taille du tableau d'octets temporaire. Comme il est possible que available() renvoie 0, vous pouvez initialiser un tableau de longueur nulle.

Il serait préférable d'initialiser simplement "données" avec un tableau de longueur fixe.

+0

mais ce code fonctionne bien avec HTTPconnection – rupesh

+0

Cela peut être juste une coïncidence de timing que les connexions HTTP ont une valeur positive pour available() alors que HTTPS est peut-être retourné 0. Il ne serait pas dommage d'essayer et simplement le remplacer par un tableau d'octets de longueur fixe. –

+0

Je pense qu'il n'y a pas getLength() pour inputtream – rupesh

Questions connexes