如何更改REST DataSnap中的Content-Type响应

时间:2017-01-31 12:59:52

标签: json rest delphi indy datasnap

我有一个由WebBroker REST制作的项目,作为服务运行,我需要将Cotent-Type响应更改为application/json,默认情况下WebBroker REST会带来我的结果在

  

Content-Type'text / html;字符集= ISO-8859-1'

我通过访问方法

来更改响应
  

GetInvocationMetadata(True).ResponseContentType ='application / json'

Data.DBXPlatform类的

,但它仍然无法解析,它会在当前版本的下方添加另一个Content-Type

这只发生在WebBroker REST,如果我通过DataSnap Server创建项目,我通常会得到它。但是我需要WebBroker REST来访问客户端发送给我的信息。

如何解决问题的示例。

  • DataSnap REST Application
  • 创建项目

在ServerMethods类中,执行相同的模型。

uses System.StrUtils, Data.DBXPlatform;

function TServerMethods1.EchoString(Value: string): string;
begin
  Result := Value;
  GetInvocationMetadata.ResponseContentType := 'application/json';
end;

示例响应标题。

连接:关闭
内容类型:text / html;字符集= ISO-8859-1
内容长度:25
日期:2013年9月10日星期二16:41:37 GMT
Pragma:dssession = 542354.126073.592372,dssessionexpires = 1200000
Content-Type:application / json

1 个答案:

答案 0 :(得分:4)

在New DataSnap WebBroker应用程序向导中,您可以选择创建单独的服务器模块。在生成的单元WebModuleUnit1.pas中有一个变量WebModuleClass,它是TWebModule的后代。此WebModuleClass对象具有类型为TWebResponse的公共属性Response,它使您能够设置ContentType。

http://docwiki.embarcadero.com/Libraries/Berlin/en/Web.HTTPApp.TWebResponse.ContentType