Подтвердить что ты не робот

Auth с Unirest JAVA

Мне нужно выполнить запрос к веб-приложению, в котором выполняется процесс исправления. Я даю этому запросу параметры, которые он запрашивает, но я не знаю, как передать учетные данные из запроса на вход, который я выполняю перед запросом на исправление. Я пытаюсь получить данные cookie из заголовков ответа на вход и передать его исправлению в качестве простой строки, но я не уверен, что это правильный способ сделать это. В основном, что я делаю, это.

HttpResponse<JsonNode> respuesta = Unirest.post(urlLogin)
    .headers(headers)
    .fields(fields)
    .asJson();
JSONObject body = respuesta.getBody().getObject();
Headers headerBody = respuesta.getHeaders();
String tmp = headerBody.get("set-cookie").get(0);
this.cookie = "sd-touch-mode=false; ".concat(tmp.replace(";Path=/;HttpOnly",""));
Map<String,String> cabeceras = new HashMap<String, String>();
cabecera.put("Cookie", this.cookie);
HttpResponse<JsonNode> respuesta = Unirest.post(urlFixpack)
    .headers(headers)
    .fields(fields)
    .asJson();

Мне не нравится, как я получаю и устанавливаю данные cookie, но я не нахожу в документации никакого правильного способа сделать это.

Кто-нибудь может мне помочь.

Спасибо.

4b9b3361

Ответ 1

Похоже, что поддержка файлов cookie не является сознательным дизайнерским решением в Unirest. Из комментариев pull-request, который добавляет поддержку файлов cookie:

API REST должен быть неактивен, поэтому я бы хотел избежать поддержки cookie в наших основных клиентских библиотеках.. но я останусь открытым этот запрос на растяжение, поэтому, если кто-то должен получить доступ к API с помощью файлов cookie, он сможет используйте свой код;)

Но, не тестируя его, я чувствую, что игра с пользовательскими HTTP-клиентами должен работать. Я бы попытался что-то подобное этому

cookieStore = new org.apache.http.impl.client.BasicCookieStore();
Unirest.setHttpClient(org.apache.http.impl.client.HttpClients.custom()
                            .setDefaultCookieStore(cookieStore)
                            .build());