我在表单上有一个 TIdHTTP 组件,我正在向基于云的服务器发送一个 http POST 请求。除了 1 个字段外,一切都运行良好:带有加号的文本字符串,例如“hello world+dog”,正在保存为“hello world dog”。
研究这个问题,我意识到URL中的“+”被认为是一个空格,所以必须对其进行编码。这就是我难过的地方;看起来 POST 请求的其余部分是由 TIdHTTP 组件编码的,除了“+”。
通过 Fiddler 查看请求,它以“hello%20world+dog”的形式出现。如果我手动编码“+”(hello world%2Bdog),结果是“hello%20world%252Bdog”。
我真的不知道我在这里做什么,所以如果有人能指出我正确的方向,那将不胜感激。
其他信息:
我使用的是 Delphi 2010。该组件没有任何特殊设置,我想我可能需要设置一些东西?Fiddler 中的标头内容类型是“application/x-www-form-urlencoded”。
然后,德尔福代码:
Request:='hello world+dog';
URL :='http://............./ExecuteWithErrors';
TSL:=TStringList.Create;
TSL.Add('query='+Request);
Try
begin
IdHTTP1.ConnectTimeout:=5000;
IdHTTP1.ReadTimeout :=5000;
Reply:=IdHTTP1.Post(URL,TSL);