Indy HTTP post 解码

3
我该如何解码和解析URL以便使用它作为POST参数。
continue=http%3A%2F%2Fmail.google.com%2Fmail%2F&service=mail&rm=false&dsh=..

var
 URL:String;
 Data:TStringList;
 MemoryStream:TMemoryStream;
begin
IdHTTP1.Post(URL, Data, MemoryStream);
1个回答

3
您可以使用 TIdURI 进行以下操作:
  • 要解码,请使用 TIdURI.URLDecode(...)
  • 要解析,请将解码后的 URI 传递给 TIdURI.Create

将它们组合起来,您会得到类似以下代码:

var
  URI: TIdURI;
....
URI := TIdURI.Create(TIdURI.URLDecode(EncodedURI));
try
  // Protocol = URI.Protocol
  // Username = URI.Username
  // Password = URI.Password
  // Host = URI.Host
  // Port = URI.Port
  // Path = URI.Path
  // Query = URI.Params
finally
  URI.Free;
end;

感谢以下回答:


这样做会更好,不是吗?URI := TIdURI.Create(TIdURI.URLDecode(URL+'/'+Params)); - user1647411
1
比什么更好?我无法确定你的数据来源。你需要的工具都在这里。 - David Heffernan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接