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

Извлечение параметра URL по имени в Delphi с помощью TIdURI

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

В статье мы рассмотрим, как извлечь или установить значение параметра URL по его имени в Delphi с помощью класса TIdURI. Несмотря на то, что TIdURI помогает парсить URL, он не предоставляет функциональности для работы с параметрами URL напрямую. Тем не менее, мы можем использовать стандартные классы Delphi для решения этой задачи.

Подтвержденный ответ

Для извлечения параметра URL по имени нам нужно сначала разобрать URL на составляющие, а затем декодировать параметры.

Url := 'https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=delphi+url+parameters+';

Params := TStringList.Create;
try
  Params.Delimiter := '&';
  Params.StrictDelimiter := true;

  Uri := TIdURI.Create(Url);
  try
    Params.DelimitedText := Uri.Params;
  finally
    Uri.Free;
  end;

  for i := 0 to Params.Count -1 do
  begin
    Params.Strings[i] := StringReplace(Params.Strings[i], '+', ' ', [rfReplaceAll]);
    Params.Strings[i] := TIdURI.URLDecode(Params.Strings[i], TIdEncoding.UTF8);
  end;

  // используйте Params как нужно...

finally
  Params.Free;
end;

Чтобы создать новый URL, просто выполните обратный процесс:

Params := TStringList.Create;
try

  // заполните Params как нужно...

  for i := 0 to Params.Count -1 do
  begin
    Params.Strings[i] := TIdURI.ParamsEncode(Params.Names[i], TIdEncoding.UTF8) + '=' + TIdURI.ParamsEncode(Params.ValueFromIndex[i], TIdEncoding.UTF8);
    Params.Strings[i] := StringReplace(Params.Strings[i], ' ', '+', [rfReplaceAll]);
  end;

  Params.Delimiter := '&';
  Params.StrictDelimiter := true;

  Uri := TIdURI.Create('');
  try
    // заполните другие свойства Uri как нужно...
    Uri.Params := Params.DelimitedText;
    URL := Uri.URI;
  finally
    Uri.Free;
  end;
finally
  Params.Free;
end;

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

Вы также можете использовать TURI из единицы System.Net.URLClient. Сначала загрузите строку адреса: TUri.create('http://google.com'). thereafter, you can use MyUri.ParameterByName['param']. It also has URLEncodeURLDecode, AddParameter, DeleteParameter, and Parameter[const I: Integer] (TNameValuePair) properties.

Комментарии

При использовании решения может возникнуть ошибка: [dcc32 Error] Unit2.pas(438): E2003 Undeclared identifier: 'enUtf8'. Это происходит потому, что enUtf8 не объявлен в используемой единице. Добавьте единицу IdGlobal в раздел Uses своего кода, чтобы исправить эту проблему.

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

В статье рассматривается, как извлечь или установить значение параметра URL по его имени в Delphi с помощью класса TIdURI и стандартных классов Delphi для работы с параметрами URL.


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

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




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


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


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 00:23:31/0.0030531883239746/0