Indy Tidhttp发布XML文件的正确编码是什么?

时间:2013-05-16 14:27:05

标签: delphi delphi-xe2 idhttp delphi-xe4 txmldocument

我注意到使用Indy Client的应用程序中的XML文件无效(我实际上使用了IdHttp的默认参数)

这是我的代码:

  ts := TStringList.Create;
  try
    ts.Add('XML=' + AXMLDoc.XML.Text));
    HTTPString := IdHTTPClient.Post('http://' + FHost + ':' + IntToStr(FPort) + FHttpRoot, ts);
  finally
    ts.Free;
  end;

我的XML文件是UTF-8编码的。

我需要做的是在我的服务器上获得良好的编码(我还使用Indy作为服务器)?

1 个答案:

答案 0 :(得分:4)

UTF-8是TIdHTTP用于提交TStringList对象的默认字符集。真正的问题是,即使使用适当的字符集,也不应该使用TStringList来提交XML。原因是因为TIdHTTP.Post(TStrings)方法实现了application/x-www-form-urlencoded内容类型,因此对TStringList内容进行url编码,如果接收者不期望这样,则可以破坏XML。因此,除非接收器实际上期望真正的application/x-www-form-urlencoded编码请求,否则应使用TIdHTTP.Post(TStream)方法传输XML,以便原始XML字节保持原样。