REST DataSnap 中的内容类型响应对我不起作用
Content-Type response in the REST DataSnap not working for me
我使用 Embarcadero® Delphi 10.4 Architect 中的向导构建了一个 DataSnap REST 服务器。我需要创建一个简单的方法来从客户端获取 PDF 文件,例如 Postman。
看完后写了下一段代码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;
但是当我从 postman 调用该方法时,出现错误,因为结果是 JSON 文件,而不是 PDF:
{"result":[[37,80,68,70,45,49,46,55,10,37,226,2...]]}
Content-Type 值正常。
我的代码有什么问题?
正如 Oliver 在评论中所说,只需将参数 ?json=false
添加到 URL
有效!!!
我使用 Embarcadero® Delphi 10.4 Architect 中的向导构建了一个 DataSnap REST 服务器。我需要创建一个简单的方法来从客户端获取 PDF 文件,例如 Postman。
看完后写了下一段代码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;
但是当我从 postman 调用该方法时,出现错误,因为结果是 JSON 文件,而不是 PDF:
{"result":[[37,80,68,70,45,49,46,55,10,37,226,2...]]}
Content-Type 值正常。
我的代码有什么问题?
正如 Oliver 在评论中所说,只需将参数 ?json=false
添加到 URL
有效!!!