Я использую Casablanca / cpprestsdk 2.10.12 в собственном проекте C ++ для Visual Studio 2017 для отправки и получения файлов из нашей файловой службы. Доступ предоставляется только в том случае, если правильное имя пользователя и пароль отправлены через basi c auth.
Я делаю следующее:
auto newCfg = http_client_config{};
newCfg.set_credentials(L"user", L"password");
auto newClient = http_client(L"http://fileserver", newCfg);
...
newClient.request(methods::GET, "/L1/settings/linesettings/globalsettings.ini").get();
Наш файловый сервер регистрирует сообщения, и я вижу каждый запрос в результате получается та же последовательность GET-UNAUTHORIZED-GET_WITH_AUTH:
Я хотел бы уменьшить количество запросов, отправив информацию аутентификации с первым GET или запрос PUT.
Еще большая проблема возникает при отправке запроса PUT. Он также отправляется без аутентификационной информации, и сервер отвечает «401 Unauthenticated», но http_client :: request не повторяет попытку с информацией об аутентификации (может быть, это не может быть из-за того, что тело контента прикреплено к запросу PUT, который отправляется через provider_consumer_buffer)
Я попытался добавить user_info к uri (http://user:password@fileserver), который я использую для создания http_client, но он вообще не использовался в запросе.
Я думаю Я мог бы добавить заголовок аутентификации к запросу сам (как описано в Установить базовую c HTTP-аутентификацию в Касабланке ), но мне это не кажется правильным.
Что еще можно попробовать? Любой вклад будет оценен.