2010-06-25 7 views
2

Je cherche à faire une application Android qui est essentiellement une vue personnalisée d'un site de jeux basé sur le texte. Je sais comment faire HttpPosting et autres, donc l'envoi d'informations de connexion est relativement simple. Mais ma question est, comment puis-je naviguer sur le site? Je n'ai jamais vraiment travaillé avec des sessions et des cookies côté client. Est-ce qu'un cookie est la bonne façon de l'implémenter? Comment renvoyer les informations au serveur lors de l'accès aux pages suivantes?L'application Android reste connectée sur le site web, les cookies? Session?

J'espère que le bon sens

Répondre

3

En général, en Java HttpURLConnection vous pouvez définir/obtenir un cookie de cette façon (ici est le processus de connexion ensemble). Le code ci-dessous est dans run() de ma connectionThread, à partir de laquelle toutes les classes d'activités de connexion héritent. Tous partagent une chaîne sCookie statique commune qui est envoyée avec toutes les demandes. Par conséquent, vous pouvez maintenir un état commun comme étant connecté/désactivé:

 HttpURLConnection conn = (HttpURLConnection) url.openConnection();    

     //set cookie. sCookie is my static cookie string 
     if(sCookie!=null && sCookie.length()>0){ 
      conn.setRequestProperty("Cookie", sCookie);     
     } 

     // Send data 
     OutputStream os = conn.getOutputStream(); 
     os.write(mData.getBytes()); 
     os.flush(); 
     os.close(); 

     // Get the response! 
     int httpResponseCode = conn.getResponseCode();   
     if (httpResponseCode != HttpURLConnection.HTTP_OK){ 
      throw new Exception("HTTP response code: "+httpResponseCode); 
     } 

     // Get the data and pass them to the XML parser 
     InputStream inputStream = conn.getInputStream();     
     Xml.parse(inputStream, Xml.Encoding.UTF_8, mSaxHandler);     
     inputStream.close(); 

     //Get the cookie 
     String cookie = conn.getHeaderField("set-cookie"); 
     if(cookie!=null && cookie.length()>0){ 
      sCookie = cookie;    
     } 

     /* many cookies handling:     
     String responseHeaderName = null; 
     for (int i=1; (responseHeaderName = conn.getHeaderFieldKey(i))!=null; i++) { 
      if (responseHeaderName.equals("Set-Cookie")) {     
      String cookie = conn.getHeaderField(i); 
      } 
     }*/     

     conn.disconnect();     
Questions connexes