А я то голову ломал. Свой HTTP сервер писал к UniGUI. А оказывается он там есть, на том порту, на котором работает сам сервер UniGUI, и всё, что нужно, это обработать событие в модуле ServerModule…
1 |
OnHTTPCommand |
Выглядеть это будет так…
Отправляем запрос из любого HTTP клиента, например с помощью компонента idHTTP
1 2 3 4 5 6 7 8 9 10 11 |
procedure TMainForm.bSendPOSTClick(Sender: TObject); var Params:TStringList; HTMLResult:string; begin Params:=TStringList.Create; Params.Add('MyComand=StartNotePad'); HtmlResult:=IdHTTP.Post('http://localhost:8077/SomeURI',Params); FreeAndNil(Params); end; |
И ловим его в самом сервере UniGUI следующим образом
UniGUI >ServerModule
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
procedure TUniServerModule.UniGUIServerModuleHTTPCommand( ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo; var Handled: Boolean); begin if ARequestInfo.URI=('/SomeURI') then begin if ARequestInfo.Params.Values['MyComand']='StartNotePad' then shellAPI.ShellExecute(0, 'open', 'c:\Windows\System32\notepad.exe', nil, nil, SW_SHOWNORMAL); end; end; |
И никаких дополнительных HTTP серверов… Выходит всё уже встроено. Остается только решать свои задачи…