Advertisement
Guest User

Untitled

a guest
Feb 1st, 2013
311
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 2.62 KB | None | 0 0
  1. unit fServerForm;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,
  7.   uROClient, uROPoweredByRemObjectsButton, uROClientIntf, uROServer,
  8.   uROBinMessage, uROIndyHTTPServer, uROJSONMessage, uROBaseHTTPServer,
  9.   IdURI, IdCustomHTTPServer, uROHTTPDispatch;
  10.  
  11. type
  12.  
  13. TUriROIndyHTTPServer = class(TROIndyHTTPServer)
  14. protected
  15.   procedure InternalServerCommandGet(AThread: TIdThreadClass; RequestInfo: TIdHTTPRequestInfo; ResponseInfo: TIdHTTPResponseInfo); override;
  16. end;
  17.  
  18.   TServerForm = class(TForm)
  19.     RoPoweredByRemObjectsButton1: TRoPoweredByRemObjectsButton;
  20.     ROMessage: TROBinMessage;
  21.     ROJSONMessage1: TROJSONMessage;
  22.     procedure FormCreate(Sender: TObject);
  23.   private
  24.     ROServer: TUriROIndyHTTPServer;
  25.   public
  26.     { Public declarations }
  27.   end;
  28.  
  29. var
  30.   ServerForm: TServerForm;
  31.  
  32. implementation
  33.  
  34.  
  35. {$R *.dfm}
  36.  
  37. procedure TServerForm.FormCreate(Sender: TObject);
  38. var Disp: TROHTTPDispatcher;
  39. begin
  40.   ROServer := TUriROIndyHTTPServer.Create(Self);
  41.   ROServer.Port := 8080;
  42.  
  43.   Disp := ROServer.Dispatchers.Add as TROHTTPDispatcher;
  44.   Disp.PathInfo := 'bin';
  45.   Disp.Message := ROMessage;
  46.   Disp.Enabled := True;
  47.  
  48.   Disp := ROServer.Dispatchers.Add as TROHTTPDispatcher;
  49.   Disp.PathInfo := 'json';
  50.   Disp.Message := ROJSONMessage1;
  51.   Disp.Enabled := True;
  52.  
  53.   ROServer.Active := true;
  54. end;
  55.  
  56. { TUriROIndyHTTPServer }
  57.  
  58. procedure TUriROIndyHTTPServer.InternalServerCommandGet(AThread: TIdThreadClass;RequestInfo: TIdHTTPRequestInfo; ResponseInfo: TIdHTTPResponseInfo);
  59. var A, B: Integer;
  60.     NewPost: AnsiString;
  61. begin
  62.   if RequestInfo.Document = '/json/sum' then
  63.     begin
  64.       // Extract the parameters
  65.       A := StrToIntDef(RequestInfo.Params.Values['a'], 0);
  66.       B := StrToIntDef(RequestInfo.Params.Values['b'], 0);
  67.       NewPost := AnsiString(Format('{"version":"1.1","method":"NewService.Sum","params":{"A":"%d","B":"%d"}}', [A, B]));
  68.  
  69.       // Prepare the (fake) post-stream
  70.       RequestInfo.PostStream.Free;
  71.       RequestInfo.PostStream := TMemoryStream.Create;
  72.       RequestInfo.PostStream.Write(NewPost[1], Length(NewPost));
  73.       RequestInfo.PostStream.Position := 0;
  74.     end
  75.   else if RequestInfo.Document = '/json/getservertime' then
  76.     begin
  77.       // Extract the parameters
  78.       NewPost := '{"version":"1.1","method":"NewService.GetServerTime"}';
  79.  
  80.       // Prepare the (fake) post-stream
  81.       RequestInfo.PostStream.Free;
  82.       RequestInfo.PostStream := TMemoryStream.Create;
  83.       RequestInfo.PostStream.Write(NewPost[1], Length(NewPost));
  84.       RequestInfo.PostStream.Position := 0;
  85.     end;
  86.  
  87.   inherited;
  88. end;
  89.  
  90. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement