2011-08-20 2 views
4

Je souhaite appeler un service Web qui nécessite un cookie d'authentification.Envoi d'informations sur les cookies dans HttpRequest

J'ai le nom et la valeur du cookie. mais je ne sais pas chaud pour injecter le cookie dans la demande.

pouvez-vous s'il vous plaît me fournir un exemple de code sur la façon de le faire.

Répondre

0
HttpClient httpClient = new DefaultHttpClient(); 

CookieStore cookieStore = new BasicCookieStore(); 
Cookie cookie = new BasicClientCookie("name", "value"); 
cookieStore.addCookie(cookie); 

HttpContext localContext = new BasicHttpContext(); 
localContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore); 

HttpGet httpGet = new HttpGet("http://www.domain.com/"); 

HttpResponse response = httpClient.execute(httpGet, localContext); 
0

Si vous utilisez (Http) URLConnection pour la demande, vous pouvez utiliser CookieManager pour gérer les cookies. Here est un article sur comment l'utiliser.

0

Il n'existe aucune méthode pour ajouter un cookie à un HttpRequest, mais vous pouvez définir un en-tête ou un paramètre.

Les cookies sont ajoutés à la HttpServletResponse comme ceci:

HttpServletResponse response; //initialized or passed in 
Cookie cookie = new Cookie("myname", "myvalue"); 
response.addCookie(cookie); 
2

Aujourd'hui, je résoudre le même problème en utilisant HttpURLConnection avec ceci:

 CookieManager cookieManager = CookieManager.getInstance(); 
     String cookieString = cookieManager.getCookie(SystemConstants.URL_COOKIE); 
     URL url = new URL(urlToServer); 
     HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
     connection.setDoOutput(true); 
     connection.setRequestMethod("POST"); 
     connection.setRequestProperty("Cookie", cookieString); 
     connection.connect(); 
     OutputStream out = connection.getOutputStream(); 
     out.write(data.getBytes()); 
     out.flush(); 
     out.close(); 
-1

Vous pouvez utiliser droidQuery pour gérer la demande:

$.ajax(new AjaxOptions().url("http://www.example.com") 
         .type("POST") 
         .dataType("json") 
         .data("data to post") 
         .cookies($.map($.entry("key", "value")))); 

droidQuery a également l'authentification intégrée en utilisant la norme HTTP approche d'authentification:

$.ajax(new AjaxOptions().url("http://www.example.com") 
         .type("POST") 
         .dataType("json") 
         .data("data to post") 
         .username("myusername") 
         .password("myPassword"));