我通常使用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;
该怎么办,因为我只能向不能使用特殊字符的用户进行身份验证。
谢谢!