Как получить при авторизации cookie программно? - PullRequest
0 голосов
/ 26 марта 2019

Мне нужно реализовать загрузку документа в систему архивации через REST-интерфейс с использованием Java с пружинной загрузкой.

Мне сказали сначала сделать запрос GET с базовой аутентификацией.Это даст мне авторизацию-куки в ответе.Затем я должен отправить эти куки с POST-запросом для фактического архивирования.

GET работает отлично.Я прочитал в Интернете, что я должен получить куки в «Set-Cookie» - заголовке ответа.Но я не получаю куки.

Странно то, что если я выполняю запрос с почтальоном, я получаю 2 куки ("AuthSessionId" и "ClientId").Почему я не получаю их программно?

Как примечание: почтальон также показывает, что я получил 15 (другие?) Заголовков в ответе.У меня нет проблем с поиском их в моем ClientHttpResponse

Вот код:

ClientHttpResponse response = request.execute();
    // this is  org.springframework.http.client.ClientHttpResponse

List<String> cookies =  response.getHeaders().get(HttpHeaders.SET_COOKIE);

if (cookies != null) {
    for (String cook : cookies) {
         System.out.println("cookie: " + cook);
    }
} else {
    System.out.println("no cookie in " + HttpHeaders.SET_COOKIE); // this is what I get
}

1 Ответ

0 голосов
/ 26 марта 2019

Кумесана прав. Файлы cookie отфильтровываются и помещаются в CookieStore. Если я установлю это раньше, я смогу получить их после завершения запроса:

CookieStore cookieStore = new BasicCookieStore();
CloseableHttpClient client = HttpClientBuilder
            .create()
            .setDefaultCredentialsProvider(credentialsProvider)  
            .setConnectionManager(poolingConnectionManager)    
            .setDefaultCookieStore(cookieStore)
            .build();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...