印.使用%发布字符串出错

Ric*_*ras 3 delphi indy delphi-7

我在Delphi 7下使用Indy 9.00.10.

我用TIdMultiPartFormDataStream后使用一些数据TIdHTTP.当我尝试发布一些包含%的文本值的param,例如'100%brand'时,它会引发"没有格式%的参数".

在我看来,它正在调用我试图发布的值的一些格式函数,它希望每个%都是一个占位符,这不是我的情况.

这是一个已知的问题?它有解决方法吗?

Rem*_*eau 6

您正在使用Indy的旧版本.Indy 9的最后一个版本是9.0.50,可以在Indy的SVN中找到.此问题已在9.0.13中修复.

如果您不想升级,那么解决方法是将'%'字段数据中的任何字符加倍,以便将它们格式化为单个'%'字符,例如:

Stream.AddFormField('FieldName', StringReplace(FieldValue, '%', '%%', [rfReplaceAll]));
Run Code Online (Sandbox Code Playgroud)