2010-11-30 17 views
1

J'ai créé une connexion HttpConnection dans BlackBerry. Il m'a renvoyé une connexion réussie mais je suis incapable de récupérer le cookie car il n'y en a pas dans l'en-tête. Est-ce que quelqu'un sait comment je peux obtenir le cookie?Aucun cookie dans l'en-tête HTTP

Ce code ..

private String login(String URL) 
{ 

    HttpConnection  httpConn = null; 
    DataInputStream  dis = null; 
    DataOutputStream dos = null; 
    StringBuffer  responseMessage = new StringBuffer(); 
    // the request body 

    //Encode the login information in Base64 format. 

    //String username = userName.getString(); 
    //String password = userPassWord.getString(); 
    // username = loginScreen.getUserId(); 
    //password = loginScreen.getPassword(); 
    try { 
     // an HttpConnection with both read and write access 
     net.rim.blackberry.api.browser.URLEncodedPostData login = new net.rim.blackberry.api.browser.URLEncodedPostData(null, false); 
     login.append("username"); //field name , value 
     login.append("password"); 
     httpConn = (HttpConnection)Connector.open(URL, Connector.READ_WRITE); 

     // set the request method to POST 
     httpConn.setRequestMethod(HttpConnection.POST); 
     httpConn.setRequestProperty(HttpProtocolConstants.HEADER_CONTENT_TYPE, HttpProtocolConstants.CONTENT_TYPE_APPLICATION_X_WWW_FORM_URLENCODED); 
     httpConn.setRequestProperty("Accept", "text/html");  

     // obtain DataOutputStream for sending the request string 
     dos = httpConn.openDataOutputStream(); 
     byte[] request_body = login.getBytes(); 

     // send request string to server 
     for(int i = 0; i < request_body.length; i++) { 
      dos.writeByte(request_body[i]); 
     }//end for(int i = 0; i < request_body.length; i++)   

     for (int i=0; ; i++) { 
      String headerName = httpConn.getHeaderFieldKey(i); 
      String headerValue = httpConn.getHeaderField(i); 
      if (headerName == null && headerValue == null) { 
       // No more headers 
       break; 
      } else 
       responseMessage.append("headerName : " + headerName + ", headerValue : " + headerValue + "\n");     
     } 

     // obtain DataInputStream for receiving server response 
     dis = new DataInputStream(httpConn.openInputStream()); 

     // retrieve the response from server 
     int data;  
     tmpCookie = httpConn.getHeaderField("Set-Cookie"); 

     responseMessage.append("1st Cookie" + tmpCookie); 
     if (tmpCookie != null) { 
     int semicolon = tmpCookie.indexOf(';'); 
      cookie = tmpCookie.substring(0, semicolon); 
      responseMessage.append("Cookie" + cookie); 
      } 

     responseMessage.append("LOGIN RESPONSE :"); 
     while((data = dis.read()) != -1) { 
      responseMessage.append((char)data ); 

     }//end while((ch = dis.read()) != -1) {   

    } 

    catch(Exception e) 
    { 
     e.printStackTrace(); 
     responseMessage.append("ERROR"); 
    } 
    finally { 
     // free up i/o streams and http connection 
     try { 
      if(httpConn != null) httpConn.close(); 
      if(dis != null) dis.close(); 
      if(dos != null) dos.close(); 
     } catch (IOException ioe) { 
      ioe.printStackTrace(); 
     }//end try/catch 
    }//end try/catch/finally 
    return responseMessage.toString(); 
}//end sendHttpPost(String) 
+0

Comment avez-vous créé une connexion http? –

+0

Http connexion à quoi? Peut-être que ce site n'utilise pas de cookies pour les sessions? –

+0

C'est une connexion http à un serveur. – JohnDoe4136

Répondre

0

Vérifiez l'API de service. Peut-être que vous attendez quelque chose qui n'existe pas (le service n'utilise pas de cookie) ou peut-être que vous n'avez pas utilisé l'API comme prévu (le service prend en charge le cookie mais la demande de service n'en demande pas). Ou, mais l'API de service doit le dire, le cookie est généré localement avec JavaScript. Dans ce cas, vous ne trouverez pas d'en-tête et vous devrez exécuter le code de script pour définir le cookie.

+0

J'ai reçu un cookie, j'accepte le codage pour l'en-tête. Qu'est-ce que ça veut dire? – JohnDoe4136