Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Ошибка 401 в запросе с использованием Indy в Delphi: как исправить неавторизованный ответ

Delphi , Интернет и Сети , URL

В данной статье мы рассмотрим проблему, с которой сталкиваются разработчики, работающие с библиотекой Indy в Delphi и получающие ответ 401 Unauthorized при выполнении HTTP-запроса. Мы поговорим о том, как правильно настроить аутентификацию и исправить эту ошибку.

Введение

Indy — это набор компонентов, предназначенных для работы с протоколами Интернета в Delphi. Он предоставляет широкий спектр возможностей для отправки и приема данных через сеть. Однако, при работе с аутентификацией и авторизацией могут возникнуть проблемы, одна из которых — получение ответа 401 Unauthorized.

Пример кода, вызывающий ошибку 401 Unauthorized

Рассмотрим пример кода, в котором используется компонент TIdHTTP для отправки GET-запроса с аутентификацией по протоколу Bearer:

procedure TForm42.Button2Click(Sender: TObject);
var
  resp: TMemoryStream;
begin
  resp := TMemoryStream.Create;
  try
    IdHTTP1.Request.Clear;
    IdHTTP1.Request.Accept := 'application/json';
    IdHTTP1.Request.BasicAuthentication := True;
    IdHTTP1.Request.CustomHeaders.FoldLines := False;
    IdHTTP1.Request.CustomHeaders.Values['Authorization'] := 'Bearer ' + TokenStr;
    IdHTTP1.Get('http://10.10.1.62:8080/api/v1/doors', resp);
    resp.Position := 0;
    memCall.Lines.LoadFromStream(resp);
  finally
    resp.Free;
  end;
end;

При выполнении этого кода мы получаем ошибку 401 Unauthorized, что означает, что сервер не может авторизовать наш запрос.

Что мы делаем не так?

Причина ошибки кроется в том, как мы настраиваем аутентификацию. В нашем примере мы установили свойство BasicAuthentication в True, но при использовании протокола Bearer это неверно. Кроме того, мы не нуждаемся в настройке CustomHeaders.FoldLines, так как TIdHTTP уже отключает ее по умолчанию.

Как исправить ошибку 401 Unauthorized?

Чтобы исправить ошибку 401 Unauthorized, мы должны правильно настроить аутентификацию. Для протокола Bearer нам нужно установить свойство BasicAuthentication в False и добавить заголовок Authorization с нашим токеном в качестве значения. Вот исправленный код:

procedure TForm42.Button2Click(Sender: TObject);
var
  resp: TMemoryStream;
begin
  resp := TMemoryStream.Create;
  try
    IdHTTP1.Request.Clear;
    IdHTTP1.Request.Accept := 'application/json';
    IdHTTP1.Request.BasicAuthentication := False;
    IdHTTP1.Request.CustomHeaders.Values['Authorization'] := 'Bearer ' + TokenStr;
    IdHTTP1.Get('http://10.10.1.62:8080/api/v1/doors', resp);
    resp.Position := 0;
    memCall.Lines.LoadFromStream(resp, TEncoding.UTF8);
  finally
    resp.Free;
  end;
end;

В этом примере мы также добавили параметр TEncoding.UTF8 в метод LoadFromStream(), чтобы правильно интерпретировать ответ сервера.

Альтернативный подход

Вместо использования TMemoryStream, мы можем использовать перегрузку метода Get(), который возвращает строку. Это упрощает наш код и делает его более читаемым:

procedure TForm42.Button2Click(Sender: TObject);
begin
  IdHTTP1.Request.Clear;
  IdHTTP1.Request.Accept := 'application/json';
  IdHTTP1.Request.BasicAuthentication := False;
  IdHTTP1.Request.CustomHeaders.Values['Authorization'] := 'Bearer ' + TokenStr;
  memCall.Text := IdHTTP1.Get('http://10.10.1.62:8080/api/v1/doors');
end;

Заключение

В данной статье мы рассмотрели проблему ошибки 401 Unauthorized при использовании Indy в Delphi и предложили два способа ее решения. Правильная настройка аутентификации — ключ к успешному выполнению HTTP-запросов с использованием Indy. Надеемся, что эта статья поможет вам разобраться с этой проблемой и эффективно работать с аутентификацией в Delphi.

Создано по материалам из источника по ссылке.

В статье рассматривается проблема получения ответа 401 Unauthorized при работе с библиотекой Indy в Delphi и описывается, как правильно настроить аутентификацию и исправить эту ошибку.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




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


:: Главная :: URL ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-01-28 05:47:55/0.0034289360046387/0