Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unit fServerForm;
- interface
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,
- uROClient, uROPoweredByRemObjectsButton, uROClientIntf, uROServer,
- uROBinMessage, uROIndyHTTPServer, uROJSONMessage, uROBaseHTTPServer,
- IdURI, IdCustomHTTPServer, uROHTTPDispatch;
- type
- TUriROIndyHTTPServer = class(TROIndyHTTPServer)
- protected
- procedure InternalServerCommandGet(AThread: TIdThreadClass; RequestInfo: TIdHTTPRequestInfo; ResponseInfo: TIdHTTPResponseInfo); override;
- end;
- TServerForm = class(TForm)
- RoPoweredByRemObjectsButton1: TRoPoweredByRemObjectsButton;
- ROMessage: TROBinMessage;
- ROJSONMessage1: TROJSONMessage;
- procedure FormCreate(Sender: TObject);
- private
- ROServer: TUriROIndyHTTPServer;
- public
- { Public declarations }
- end;
- var
- ServerForm: TServerForm;
- implementation
- {$R *.dfm}
- procedure TServerForm.FormCreate(Sender: TObject);
- var Disp: TROHTTPDispatcher;
- begin
- ROServer := TUriROIndyHTTPServer.Create(Self);
- ROServer.Port := 8080;
- Disp := ROServer.Dispatchers.Add as TROHTTPDispatcher;
- Disp.PathInfo := 'bin';
- Disp.Message := ROMessage;
- Disp.Enabled := True;
- Disp := ROServer.Dispatchers.Add as TROHTTPDispatcher;
- Disp.PathInfo := 'json';
- Disp.Message := ROJSONMessage1;
- Disp.Enabled := True;
- ROServer.Active := true;
- end;
- { TUriROIndyHTTPServer }
- procedure TUriROIndyHTTPServer.InternalServerCommandGet(AThread: TIdThreadClass;RequestInfo: TIdHTTPRequestInfo; ResponseInfo: TIdHTTPResponseInfo);
- var A, B: Integer;
- NewPost: AnsiString;
- begin
- if RequestInfo.Document = '/json/sum' then
- begin
- // Extract the parameters
- A := StrToIntDef(RequestInfo.Params.Values['a'], 0);
- B := StrToIntDef(RequestInfo.Params.Values['b'], 0);
- NewPost := AnsiString(Format('{"version":"1.1","method":"NewService.Sum","params":{"A":"%d","B":"%d"}}', [A, B]));
- // Prepare the (fake) post-stream
- RequestInfo.PostStream.Free;
- RequestInfo.PostStream := TMemoryStream.Create;
- RequestInfo.PostStream.Write(NewPost[1], Length(NewPost));
- RequestInfo.PostStream.Position := 0;
- end
- else if RequestInfo.Document = '/json/getservertime' then
- begin
- // Extract the parameters
- NewPost := '{"version":"1.1","method":"NewService.GetServerTime"}';
- // Prepare the (fake) post-stream
- RequestInfo.PostStream.Free;
- RequestInfo.PostStream := TMemoryStream.Create;
- RequestInfo.PostStream.Write(NewPost[1], Length(NewPost));
- RequestInfo.PostStream.Position := 0;
- end;
- inherited;
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement