Delphi使用TIdHttp和特殊字符发送POST

时间:2018-10-17 11:24:21

标签: delphi idhttp

我通常使用TIdHttp进行身份验证,但是当用户名具有特殊字符时,它不起作用,通过浏览器分析POST,我看到了转换,例如浏览器中的用户名“aforça”保持为“ afor %E7a”,甚至没有向我发送浏览器发送的内容,即“ afor%E7a”也无效。

我尝试了以下操作:

var
 Params2: TStringList;
begin
    Params2 := TStringList.Create;
    Params2.Add('username=' + UTF8String('aforça'));
    Params2.Add('password=' + UTF8String('123456'));
    xHtmlRetorno := IdHttp.Post('urlsite.com', Params2);
end;

不起作用。

搜索该怎么做,我发现了以下内容:

var
 Params3 : TIdMultipartFormDataStream;
begin
  Params3 := TIdMultipartFormDataStream.Create;
  Params3.AddFormField('username', UTF8Encode('aforça'), 'utf-8').ContentTransfer := '8bit';
  Params3.AddFormField('password', UTF8Encode('123456'), 'utf-8').ContentTransfer := '8bit';
  xHtmlRetorno := IdHttp.Post('urlsite.com', Params3);
end;

这也不起作用...

即使我随浏览器发送而发送,它也不起作用。

var
 Params2: TStringList;
begin
    Params2 := TStringList.Create;
    Params2.Add('username=' + UTF8String('afor%E7a'));
    Params2.Add('password=' + UTF8String('123456'));
    xHtmlRetorno := IdHttp.Post('urlsite.com', Params2);
end;

该怎么办,因为我只能向不能使用特殊字符的用户进行身份验证。

谢谢!

0 个答案:

没有答案