Type response in the REST DataSnap

I have a project made from WebBroker REST , running as a service, I need to change the Cotent-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 another Content-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.

  • Create a Project from the DataSnap REST Application
  • 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


    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

    链接地址: http://www.djcxy.com/p/8438.html

    上一篇: 可以(a == 1 && a == 2 && a == 3)评估为真?

    下一篇: 在REST DataSnap中键入响应