TsgcWebSocketServer_HTTPAPI | Wysyłanie odpowiedzi tekstowej
Użyj zdarzenia OnHTTPRequest do obsługi żądań HTTP.
Klasa THttpServerRequest zawiera dane żądania HTTP.
- Document: dokument, do którego próbuje uzyskać dostęp peer.
- Method: metoda HTTP ('GET', 'POST' itp.)
- Headers: nagłówki żądania HTTP.
- AcceptEncoding: zmienna akceptowanego kodowania, przykład: "gzip, deflate, br".
- ContentType: przykład: „text/html"
- Content: treść żądania, jeśli istnieje.
- QueryParams: parametry zapytania.
- Cookies: ciasteczka, jeśli istnieją.
- ContentLength: rozmiar treści.
- AuthExists, AuthUsername, AuthPassword: dane żądania uwierzytelnienia.
- Stream: jeśli żądanie http ma treść, jest to strumień tej treści.
Klasa THttpServerResponse zawiera dane odpowiedzi HTTP.
- ContentText: odpowiedź w postaci tekstu.
- ContentType: przykład: "text/html". Aby zakodować ContentText w UTF8, należy ustawić charset='utf-8'. Przykład: text/html; charset=utf-8
- CustomHeaders: jeśli wymagane jest wysyłanie własnych nagłówków, należy użyć tej zmiennej
- AuthRealm: jeśli serwer wymaga uwierzytelniania, należy ustawić tę zmienną.
- ResponseNo: numer odpowiedzi HTTP. Przykład: 200 oznacza pomyślną odpowiedź.
- ContentStream: jeśli odpowiedź zawiera strumień, należy go tutaj ustawić (nie należy zwalniać strumienia — zostanie zwolniony automatycznie).
- FileName: jeśli odpowiedź jest nazwą pliku, należy tutaj podać pełną ścieżkę do pliku.
- Date, Expires, LastModified: zmienne datetime odpowiedzi.
- CacheControl: umożliwia dostosowanie zachowania pamięci podręcznej.
Przykład: jeśli serwer odbierze żądanie GET dla dokumentu "/test.html", należy wysłać odpowiedź OK. W przeciwnym razie należy wysłać odpowiedź 404 dla żądania GET dotyczącego innego dokumentu lub błąd 500 dla żądania z inną metodą.
procedure OnHTTPRequest(aConnection: TsgcWSConnection_HTTPAPI;
const aRequestInfo: THttpServerRequest;
var aResponseInfo: THttpServerResponse);
begin
if aRequestInfo.Method = 'GET' then
begin
if aRequestInfo.Document = '/test.html' then
begin
aResponseInfo.ResponseNo := 200;
aResponseInfo.ContentText := 'OK';
aResponseInfo.ContentType := 'text/html; charset=UTF-8';
end
else
aResponseInfo.ResponseNo := 404;
end
else
aResponseInfo.ResponseNo := 500;
end;