Отправка информации о куки в 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"));