Читал интересную статью про idHTTPServer , и обнаружил, что кроме того способа отдачи контента, который указан в статье, я знаю ещё один. Решил записать.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
procedure TServer.IdHTTPServerCommandGet(AContext: TIdContext; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo); sl: TStringList; begin // это просто пример теста соединения if ARequestInfo.URI = '/testConnection' then begin AResponseInfo.ResponseNo := 200; AResponseInfo.CacheControl := 'no-cache'; AResponseInfo.CustomHeaders.Add('Access-Control-Allow-Origin: *'); AResponseInfo.ContentText := 'ok'; AResponseInfo.ResponseNo := 200; AResponseInfo.WriteContent; end; // 1 способ if ARequestInfo.URI = '/getSomeDocument' then begin AResponseInfo.ResponseNo := 200; AResponseInfo.CacheControl := 'no-cache'; AResponseInfo.CustomHeaders.Add('Access-Control-Allow-Origin: *'); // read some document sl := TStringList.Create; try sl.LoadFromFile('index.html'); AResponseInfo.ContentText := sl.Text; finally sl.Free; end; // AResponseInfo.ResponseNo := 200; AResponseInfo.WriteContent; end; // 2 способ try //отдача индексного или иного файла с диска if ARequestInfo.Document = '/' then AResponseInfo.ContentStream := TFileStream.Create('index.html', fmOpenRead) else begin // fileName:=www + ARequestInfo.Document; AResponseInfo.ContentStream := TFileStream.Create(ARequestInfo.Document, fmOpenRead); end; except AResponseInfo.ContentText := '<b>File not found or access denied!'; end; end; |