Jefferson Rudolf
Jefferson Rudolf

Reputation: 161

How to change the Content-Type response in the REST DataSnap

I have a project made from WebBroker REST, running as a service, I need to change theCotent-Type response to application/json and by default WebBroker REST brings me as a result the

Content-Type 'text/html; charset=ISO-8859-1'

I change the response by accessing the method

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

of the Data.DBXPlatform class, but it still does not resolve it it adds anotherContent-Type just below the current one.

This only happens only in WebBroker REST, if I create a project by DataSnap Server I usually get it. But I need WebBroker REST to access the information the client sends me.

Example of how to make the problem occur.

In the ServerMethods class, do the same model.

uses System.StrUtils, Data.DBXPlatform;

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

Example response Header.

Connection: close
Content-Type: text/html; charset=ISO-8859-1
Content-Length: 25
Date: Tue, 10 Sep 2013 16:41:37 GMT
Pragma: dssession=542354.126073.592372,dssessionexpires=1200000
Content-Type: application/json

Upvotes: 3

Views: 3692

Answers (1)

Erwin
Erwin

Reputation: 1926

In New DataSnap WebBroker Application Wizard you have the option to create a separate Server Module. In the generated unit WebModuleUnit1.pas there is a variable WebModuleClass, which is a descendant of TWebModule. This WebModuleClass object has a public property Response of type TWebResponse, which gives you ability to set ContentType.

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

Upvotes: 4

Related Questions