【发布时间】:2021-10-28 07:31:53
【问题描述】:
我使用 Embarcadero® Delphi 10.4 Architect 中的向导构建了一个 DataSnap REST 服务器。我需要创建一个简单的方法来从客户端(例如 Postman)获取 PDF 文件。
看了Return an image from a Delphi REST server and show it in a browser之后写下一段代码:
function TServerMethods1.GetPdf: TFileStream;
var
fStream: TFileStream;
begin
fStream := TFileStream.Create('images/ticket.pdf', fmOpenread or fmShareDenyNone);
GetInvocationMetadata.ResponseContentType := 'application/pdf';
Result := fStream;
end;
在 AfterDispatch 事件中:
procedure TWebModule1.WebModuleAfterDispatch(Sender: TObject; Request: TWebRequest;
Response: TWebResponse; var Handled: Boolean);
begin
Response.ContentType := 'application/pdf';
end;
但是当我从邮递员调用该方法时,我收到一个错误,因为结果是 JSON 文件,而不是 PDF:
{"result":[[37,80,68,70,45,49,46,55,10,37,226,2...]]}
Content-Type 值没问题。
我的代码有什么问题?
【问题讨论】:
-
正如here 所解释的,您可以通过将
?json=false附加到URL 来禁用JSON 输出。