Ignore:
Timestamp:
Jan 4, 2012, 2:27:19 PM (13 years ago)
Author:
chronos
Message:
  • Added: Support for handling POST values in HTTPServer.
  • Fixed: TCP server to start listening and wait for termination.
  • Added: ServerType of WebApp as CGI or TCP.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Network/CoolWeb/WebServer/UHTTPServer.pas

    r250 r311  
    2828
    2929  THTTPRequest = class
     30    ContentType: string;
     31    Content: TMemoryStreamEx;
    3032    Query: TQueryParameterList;
    3133    QueryParts: TListString;
     
    3436    Headers: TStringList;
    3537    Cookies: TCookieList;
     38    Post: TQueryParameterList;
     39    procedure Clear;
    3640    constructor Create;
    3741    destructor Destroy; override;
     
    4246  THTTPResponse = class
    4347    ContentType: string;
    44     Stream: TMemoryStreamEx;
     48    Content: TMemoryStreamEx;
    4549    Headers: TStringList;
    4650    Cookies: TCookieList;
     51    procedure Clear;
    4752    constructor Create;
    4853    destructor Destroy; override;
     
    126131  I: Integer;
    127132begin
    128   with HandlerData, Response.Stream do begin
     133  with HandlerData, Response.Content do begin
    129134    //Response.Cookies.Values['Test'] := 'Halo';
    130135    //Response.Cookies.Values['Test2'] := 'Halo2';
     
    134139
    135140    WriteString('<a href="?ServerInfo">Refresh</a>');
     141
     142    WriteString('<h5>Request HTTP content:</h5>');
     143    WriteStream(Request.Content, Request.Content.Size);
    136144
    137145    WriteString('<h5>Request HTTP headers</h5>');
     
    151159    end;
    152160
     161    WriteString('<h5>Request HTTP POST</h5>');
     162    for I := 0 to Request.Post.Count - 1 do begin;
     163      WriteString(Request.Post.Strings[I] + '<br/>');
     164    end;
     165
     166
     167    WriteString('<h5>Response HTTP content:</h5>');
     168    WriteStream(Response.Content, Response.Content.Size);
     169
    153170    WriteString('<h5>Response HTTP headers</h5>');
    154     with Response.Stream do
     171    with Response.Content do
    155172    for I := 0 to Response.Headers.Count - 1 do begin;
    156173      WriteString(Response.Headers.Strings[I] + '<br/>');
     
    166183procedure THTTPServer.ErrorResponse(HandlerData: THTTPHandlerData);
    167184begin
    168   with HandlerData, Response.Stream do begin
     185  with HandlerData, Response.Content do begin
    169186    WriteString('<html><body>' + Format(SPageNotFound, [Request.Path]) + '</body></html>');
    170187  end;
     
    193210      Response.Headers.Values['Content-Type'] := GetMIMEType(Copy(ExtractFileExt(FileName), 2, 255));
    194211      BinaryFile := TFileStream.Create(FileName, fmOpenRead);
    195       Response.Stream.WriteStream(BinaryFile, BinaryFile.Size);
     212      Response.Content.WriteStream(BinaryFile, BinaryFile.Size);
    196213      BinaryFile.Destroy;
    197214    end else
    198     with Response.Stream do begin
     215    with Response.Content do begin
    199216      WriteLn(Format(SFileNotFound, [Request.Path]));
    200217      WriteString('<html><body>' + Format(SFileNotFound, [Request.Path]) + '</body></html>');
     
    217234{ THTTPResponse }
    218235
     236procedure THTTPResponse.Clear;
     237begin
     238  Content.Clear;
     239  Cookies.Clear;
     240  Headers.Clear;
     241end;
     242
    219243constructor THTTPResponse.Create;
    220244begin
    221   Stream := TMemoryStreamEx.Create;
     245  Content := TMemoryStreamEx.Create;
    222246  Cookies := TCookieList.Create;
    223247  Headers := TStringList.Create;
     
    226250destructor THTTPResponse.Destroy;
    227251begin
    228   Stream.Free;
     252  Content.Free;
    229253  Headers.Free;
    230254  Cookies.Free;
     
    253277{ THTTPRequest }
    254278
     279procedure THTTPRequest.Clear;
     280begin
     281  Post.Clear;
     282  Content.Clear;
     283  QueryParts.Clear;
     284  Cookies.Clear;
     285  Headers.Clear;
     286  Query.Clear;
     287end;
     288
    255289constructor THTTPRequest.Create;
    256290begin
     291  Post := TQueryParameterList.Create;
    257292  Query := TQueryParameterList.Create;
    258293  QueryParts := TListString.Create;
    259294  Headers := TStringList.Create;
    260295  Cookies := TCookieList.Create;
     296  Content := TMemoryStreamEx.Create;
    261297end;
    262298
    263299destructor THTTPRequest.Destroy;
    264300begin
     301  Content.Free;
     302  Post.Free;
    265303  Query.Free;
    266304  QueryParts.Free;
Note: See TracChangeset for help on using the changeset viewer.