如何从URL获取(提取)/设置参数?

安德烈·加拉廷(Andrei Galatyn)

我有这样的网址(例如):

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

我需要按名称(“ sourceid”,“ ion”,...)获取/设置参数值。我怎样才能做到这一点?Delphi具有TIdURI类,它有助于解析URL,但不能解析参数,它将所有参数作为单个字符串(属性Params)返回。当然我可以创建自己的解析器,但是它是如此基本的功能,应该有一些标准方法(我希望)。我很惊讶TIdURI没有它。

雷米·勒博

您需要先将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], enUtf8);
  end;

  // use Params as needed...

finally
  Params.Free;
end;

要创建一个新的URL,只需逆转此过程即可:

Params := TStringList.Create;
try

  // fill Params as needed...

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

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

  Uri := TIdURI.Create('');
  try
    // fill other Uri properties as needed...
    Uri.Params := Params.DelimitedText;
    URL := Uri.URI;
  finally
    Uri.Free;
  end;
finally
  Params.Free;
end;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从参数获取URL

来自分类Dev

如何获取url参数?

来自分类Dev

如何使用jQuery提取URL参数

来自分类Dev

如何从编码的URL获取参数?

来自分类Dev

如何获取URL参数并设置页面加载时选择选项的值?

来自分类Dev

如何使用节点获取请求设置参数

来自分类Dev

如何从grails中的URL获取参数

来自分类Dev

如何使用JSP从URL获取参数值

来自分类Dev

如何在URL中获取查询参数

来自分类Dev

如何从AngularJS中的URL参数获取值?

来自分类Dev

如何获取没有参数的状态URL?

来自分类Dev

如何从Codeigniter中的url获取参数?

来自分类Dev

如何在ReactJS中获取URL参数

来自分类Dev

如何获取没有参数的PHP URL

来自分类Dev

RegEx / Javascript:如何从URL获取参数?

来自分类Dev

Angular.js-如何从URL获取参数

来自分类Dev

如何在cakephp中获取URL参数?

来自分类Dev

如何从url获取所有php参数?

来自分类Dev

如何在 JavaScript 中获取 URL 参数?

来自分类Dev

如何从js中的url获取参数?

来自分类Dev

如何使用 ActivatedRoute 获取 url 参数?

来自分类Dev

如何从参数 URL mountebank 中获取价值?

来自分类Dev

如何从JSF 2.2提取URL路径和查询参数?

来自分类Dev

如何在Excel中的URL中提取参数?

来自分类Dev

如何使用Java脚本从当前URL获取多个URL参数

来自分类Dev

从android url提取参数值

来自分类Dev

在Ruby中提取URL参数

来自分类Dev

从 URL Excel 中提取参数

来自分类Dev

如何在获取期间设置实体的非映射参数的值