我有一个传入的URL,我需要捕捉一些参数,我们的项目是在 Delphi 中。下面是URL的样子:
我需要在“state”之后和“code”之前得到值。我正在使用图里中的类
AURL = 'https://accounts.google.com/o/oauth2/approval/v2?auto=false&response=state%3DF409B222-B0B5-4AF0-B3A2-BC64DCEDA5B6%26code%3D4%2F1AY0e-g6kT90V4_L-HN_BkljW8XCAP79bVIaoE7ZErspKCTr83teAEPxbyHs%26scope%3Dprofile%2520openid%2520https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile%26authuser%3D0%26prompt%3Dconsent&approvalCode=4%2F1AY0e-g6kT90V4_L-HN_BkljW8XCAP79bVIaoE7ZErspKCTr83teAEPxbyHs#'
uri := TUri.Create(AUrl);
returnstate := uri.ParameterByName['state'];
当使用参数byname时,它是空的。感谢你的帮助。
1条答案
按热度按时间vbkedwbf1#
如注解中所述,您需要解码
response
参数。第一步是百分比解码。你可以使用
TURLEnconding
来实现。然后,在编码的
&
字符处断开嵌入的response
。可能有一种更简单的方法,但您可以使用Pos
或TPerlRegEx
。我认为一个快速的方法是使用TStringList
并将&
设置为Delimiter
字符:然后,您有名称-值对,标准的
TStringList
将为您分隔它们。