RT。idhttp的httpOption,默认为[hoForceEncodeParams],即自动编码参数,但是idhttp自动编码有点小问题,如果参数中有" (空格)",会转成“+”,有加号会转成“ (空格)”,问题来了,如果我想提交一个参数,值为一个MD5值(MD5中很可能有“+”),在自动编码过程中,加号被编码成空格,最终导致参数错误。所以,post参数最好还是自己用函数编码,这样比较放心,附上urlEncode函数:
function EncodeURL(const InputStr: string): string;
var
Idx: Integer;
begin
Result := '';
for Idx := 1 to Length(InputStr) do
begin
case InputStr[Idx] of
'A'..'Z', 'a'..'z', '0'..'9', '-', '_', '.':
Result := Result + InputStr[Idx];
' ':Result := Result + '%20';
'+':Result := Result + '%2B';
else
Result := Result + '%' + SysUtils.IntToHex(Ord(InputStr[Idx]), 2);
end;
end;
end;
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步