Ваша проблема связана с тем, что при работе через прокси-сервер Cisco и NTLM-аутентификации на корпоративном сайте у вас возникает ошибка 401. Это происходит из-за отсутствия заголовков NTLM-аутентификации в запросе, который отправляется через WinInet.
Для решения этой проблемы в вашем коде используется класс TWinInet, где реализована функция GetHTTP, которая отправляет HTTP-запрос. В функции SendRequest используется метод HttpSendRequest, но для работы с NTLM-аутентификацией необходимо использовать функции InternetSetOption для установки параметров пользователя и пароля.
Вот пример кода, который позволяет установить параметры пользователя и пароля для WinInet-запроса:
function TWinInet.GetHTTP(AURL, AParam, AMethod, AType_Access, APostData, ALogin, APass: string): string;
begin
// ... (инициализация и основной код функции)
// Проверка на наличие параметров для NTLM-аутентификации
if ALogin <> '' and APass <> '' then
begin
InternetSetOption(httpRequest, INTERNET_OPTION_USERNAME, PChar(ALogin), SizeOf(ALogin));
InternetSetOption(httpRequest, INTERNET_OPTION_PASSWORD, PChar(APass), SizeOf(APass));
end;
// ... (дальше следует код отправки запроса)
end;
Таким образом, вы должны вызвать функцию GetHTTP класса TWinInet, передав в неё необходимые параметры, включая URL, метод запроса (например, 'GET' или 'POST'), тип содержимого (например, 'Content-Type') и, если требуется, данные для NTLM-аутентификации (логин и пароль пользователя). Важно, что при наличии данных для NTLM-аутентификации, они должны быть переданы в виде строк, содержащих логин и пароль, разделенные обратным косой чуром (Backslash).
Проблема заключается в настройке WinInet-запроса для использования NTLM-аутентификации через прокси-сервер Cisco, что требует добавления параметров пользователя и пароля с помощью функции `InternetSetOption`.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS