Использование cookies в запросах после авторизации

Есть android приложение, которое использует api для взаимодействия с внешним сервисом. Для работы с запросами использую okhttp3:

private final static HashMap<HttpUrl, List<Cookie>> cookieStore = new HashMap<>();
public static CookieJar WaviotCookieJar = new CookieJar() {
    @Override
    public void saveFromResponse(@NotNull HttpUrl httpUrl, @NotNull List<Cookie> list) {
        cookieStore.put(httpUrl, list);
            if(!cookieStore.isEmpty()){
                try {
                    WaviotPreferences.WaviotCookie.addAll(cookieStore.get(httpUrl));
                }
                catch (Exception e) {
                    e.printStackTrace();
                }
            }
    }

    @NotNull
    @Override
    public List<Cookie> loadForRequest(@NotNull HttpUrl httpUrl) {
        List<Cookie> cookies = cookieStore.get(httpUrl);
        return cookies != null ? cookies : new ArrayList<Cookie>();
    }
};

public static OkHttpClient WaviotClient = new OkHttpClient.Builder()
        .cookieJar(WaviotCookieJar)
        .build();

После авторизации возвращается JWT и сессионые куки, которые сохраняются в статичный ArrayList public static ArrayList <Cookie> WaviotCookie = new ArrayList<>(); Далее сохраненные куки используется для всех остальных запросов, например для завершения сессии. Проблема заключается в что, что при добавлении куки в новый запрос, сервер их не получает. Пример запроса на завершение сессии:

FormBody.Builder mFormBuilder = new FormBody.Builder();
            for (Cookie cookie:WaviotHttpClient.WaviotClient.cookieJar().loadForRequest(HttpUrl.parse("https://auth.waviot.ru/?action=user-login&true_api=1"))) {
                mFormBuilder.add(cookie.name() , cookie.value());
RequestBody formBody = mFormBuilder.build();
                okhttp3.Request request = new Request.Builder()
                        .url("https://auth.waviot.ru/?action=user-logout")
                        .addHeader("Content-type","application/json")
                        .addHeader("X-requested-with","XMLHttpRequest")
                        .post(formBody)
                        .build();

WaviotHttpClient.WaviotClient.newCall(request).enqueue(new Callback() {

                    @Override
                    public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
                        try (ResponseBody responseBody = response.body()) {
                            if (!response.isSuccessful()) throw new IOException("Ошибка " + response);
                            }
                        }


                    @Override
                    public void onFailure(@NotNull Call call, @NotNull IOException e) {
                        e.printStackTrace();
                    }
                }

Куки добавляются в тело запроса, но сервер все равно возвращает 401 (нет авторизации). Пробовал делать тело запроса через JsonObject, куки также добавляются, но сервер их не принимает. Проблема не на стороне сервера, делал запрос через Insomnia с явно указанными значениями кук в теле, на что возвращалось ожидаемое 200 OK. На данный момент причину ошибки понять не могу.


Ответы (0 шт):