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

Добавление заголовка авторизации в HTTP-запросы с использованием THTTPRIO в Delphi

Delphi , Интернет и Сети , Компоненты и Интернет

 

В статье мы рассмотрим проблему добавления заголовка авторизации в HTTP-запросы, выполняемые с помощью компонента THTTPRIO в среде разработки Delphi XE7. Эта проблема актуальна для разработчиков, работающих с веб-сервисами, использующими протокол SOAP.

Объяснение контекста

При работе с THTTPRIO в Delphi XE7 для получения данных от SOAP-сервера пользователь столкнулся с проблемой добавления заголовка авторизации в HTTP-запрос. В частности, необходимо было добавить строку Authorization: Basic с соответствующим кодом авторизации. В SoapUI такой запрос выполняется без проблем, но в Delphi XE7 у пользователя возникли трудности с добавлением этой строки в заголовок запроса.

Решение проблемы

Для добавления заголовка авторизации в HTTP-запрос с использованием THTTPRIO в Delphi, необходимо воспользоваться свойствами Username и Password компонента THTTPRIO.HTTPWebNode. При создании HTTP-запроса эти свойства автоматически объединяются и преобразуются в Base64 для включения в заголовок Authorization.

Пример кода

var
  HTTPClient: THTTPRIO;
begin
  HTTPClient := THTTPRIO.Create(nil);
  try
    HTTPClient.Host := 'eclienttest.abc.com';
    HTTPClient.Request.Timeout := 30000;
    HTTPClient.Request.ContentType := 'text/xml;charset=UTF-8';
    HTTPClient.Request.BasicAuthentication := True;
    HTTPClient.Request.Username := 'username';
    HTTPClient.Request.Password := 'password';

    // Установите путь к SOAP сервису
    HTTPClient.Request.URL := '/ClientServices/ClientServPort.svc';

    // Создание SOAP запроса
    HTTPClient.Request.CustomHeaders.Add('SOAPAction', '"getUserList"');
    HTTPClient.Request.CustomHeaders.Add('Accept-Encoding', 'gzip,deflate');
    HTTPClient.Request.CustomHeaders.Add('Connection', 'Keep-Alive');
    HTTPClient.Request.CustomHeaders.Add('User-Agent', 'Apache-HttpClient/4.5.5 (Java/16.0.2)');
    HTTPClient.Request.CustomHeaders.Add('Content-Length', '436'); // Установите реальную длину тела запроса

    var
      SOAPRequest: string;
    begin
      SOAPRequest :=
      '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" ' +
      'xmlns:en="http:/abc.com/eUserList/">' +
      '<soapenv:Header/>' +
      '<soapenv:Body>' +
        '<en:getUserListRequest>' +
          '<en:Role>AAA</en:Role>' +
        '</en:getUserListRequest>' +
      '</soapenv:Body>' +
    '</soapenv:Envelope>';

      HTTPClient.Request.ContentAs := 'text';
      HTTPClient.Request.Content := SOAPRequest;

      // Отправка запроса
      HTTPClient.Execute(0);
    end;
  finally
    HTTPClient.Free;
  end;

Обратите внимание, что в примере кода необходимо будет установить реальные значения для Content-Length в зависимости от содержимого SOAP запроса.

Альтернативное решение

Если по каким-то причинам вышеуказанный метод не подходит, можно использовать альтернативный подход с созданием собственного заголовка Authorization с помощью метода CustomHeaders.Add. Однако это потребует ручного добавления кодирования Base64, что может быть более сложным и подвержено ошибкам.

Заключение

В данной статье мы рассмотрели, как добавить заголовок авторизации в HTTP-запросы, используя THTTPRIO в Delphi XE7. Предложенное решение основано на использовании свойств Username и Password компонента THTTPRIO.HTTPWebNode, что является стандартным и удобным способом для добавления авторизации в запросы.

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

Статья посвящена решению проблемы добавления заголовка авторизации в HTTP-запросы, выполняемые с использованием компонента THTTPRIO в среде разработки Delphi XE7, что актуально для разработчиков, работающих с веб-сервисами на протоколе SOAP.


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

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




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


:: Главная :: Компоненты и Интернет ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-02-19 02:00:05/0.0032501220703125/0