Отправка информации о куки в HttpRequest

Я хочу вызвать веб-сервис, который требует куки-файл аутентификации.

У меня есть имя и значение файла cookie. но я не знаю, как вставить cookie в запросе.

Можете ли вы предоставить мне пример кода о том, как это сделать.

5 ответов

Решение

Сегодня я решаю ту же проблему, используя 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();

Если вы используете (Http)UrlConnection для запроса, то вы можете использовать CookieManager для обработки файлов cookie. Вот статья о том, как его использовать.

Нет способа добавить cookie в HttpRequest, но вы можете установить заголовок или параметр.

Файлы cookie добавляются в HttpServletResponse следующим образом:

HttpServletResponse response; //initialized or passed in
Cookie cookie = new Cookie("myname", "myvalue");
response.addCookie(cookie);
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);

Вы можете использовать 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"));
Другие вопросы по тегам