Delphi REST.Client下载损坏的PDF

时间:2015-12-28 13:47:34

标签: rest delphi pdf

如何保存REST.Response.Content PDF文件而不会破坏它? 保存后,我运行PDF并只有白屏。没有内容。

client.BaseURL := URL;

req.Params.Clear();
req.ClearBody();
req.Method := TRESTRequestMethod.rmGET;

  try
    req.Execute();
  except
    on e: ERESTException do
    begin
      //TODO: Error
    end;
  end;

在req.response.content中我有PDF格式的字符串。但是,当我试图保存它时,它总是被破坏。

//修改

function TPDF.saveFile(): TResult;
var
  file: TStringStream;
  f: TFileStream;
  len: integer;
  bytes: TBytes;

begin

  file := TStringStream.Create();
  file.WriteString(response.Content);

  //f := TFileStream.Create(fileName, fmCreate);
  bytes := TEncoding.ANSI.GetBytes(response.Content); //i am tryied ANSI, UNICODE, UTF8

    //f.ReadData(bytes, response.ContentLength);
  //f.Position := 0;
  //f.WriteData(bytes, response.ContentLength);

  file.WriteData(bytes, response.ContentLength);
  file.SaveToFile(fileName);
//  TFile.WriteAllBytes(fileName, bytes);
//  file.SaveToFile(fileName);

  result := setResult(kbOK);
end;

2 个答案:

答案 0 :(得分:1)

PDF不使用单一编码格式。您的服务器端代码必须将其作为二进制数据发送,以便String转换不会破坏它。此外,您的客户端必须将响应视为二进制数据。

答案 1 :(得分:0)

使用idHTTP直接获取响应。

idHTTP.Get('http://example.com/thefile', myFileStream)