【问题标题】:Content-Type response in the REST DataSnap not working for meREST DataSnap 中的 Content-Type 响应对我不起作用
【发布时间】: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 输出。

标签: delphi datasnap


【解决方案1】:

正如Oliver在cmets中所说,只需将参数?json=false添加到URL中

成功了!!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-05
    • 2022-06-25
    • 2016-10-08
    • 2021-12-22
    • 1970-01-01
    • 2017-01-24
    • 2023-04-07
    • 1970-01-01
    相关资源
    最近更新 更多