在Http请求中发送Cookie信息

时间:2011-08-20 19:02:17

标签: android

我想调用一个需要身份验证cookie的Web服务。

我有cookie名称和值。但我不知道如何在请求中注入cookie。

您可以向我提供有关如何执行此操作的代码示例。

5 个答案:

答案 0 :(得分:2)

今天,我使用HttpUrlConnection解决了同样的问题:

        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 :(得分: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);

答案 2 :(得分:0)

如果您正在使用(Http)UrlConnection请求,那么您可以使用CookieManager来处理Cookie。 Here是一篇关于如何使用它的文章。

答案 3 :(得分:0)

没有向HttpRequest添加Cookie的方法,但您可以设置标题或参数。

将Cookie添加到HttpServletResponse中,如下所示:

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

答案 4 :(得分:-1)

您可以使用droidQuery来处理请求:

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

droidQuery 还使用标准 HTTP 身份验证方法构建了身份验证:

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