0

我注意到我在使用 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 作为服务器)?

4

1 回答 1

5

UTF-8 是TIdHTTP用于提交TStringList对象的默认字符集。真正的问题是 XML 不应该以 aTStringList开头,即使是正确的字符集。原因是该TIdHTTP.Post(TStrings)方法实现了application/x-www-form-urlencoded内容类型,因此对TStringList内容进行了 url 编码,如果接收者没有预料到,这可能会破坏 XML。因此,除非接收者实际上期待一个真正的application/x-www-form-urlencoded编码请求,否则应该使用该TIdHTTP.Post(TStream)方法传输 XML,以便原样保留原始 XML 字节。

于 2013-05-16T19:19:45.507 回答