Changeset 376 for Network/CoolWeb/WebServer/UHTTPServer.pas
- Timestamp:
- Jun 18, 2012, 10:42:17 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Network/CoolWeb/WebServer/UHTTPServer.pas
r311 r376 7 7 uses 8 8 Classes, SysUtils, UTCPServer, UCommon, UMemoryStreamEx, UMIMEType, 9 Synautil, SpecializedList ;9 Synautil, SpecializedList, SpecializedDictionary; 10 10 11 11 type … … 31 31 Content: TMemoryStreamEx; 32 32 Query: TQueryParameterList; 33 QueryParts: TListString; 34 Path: string; 33 Path: TListString; 35 34 Method: string; 36 Headers: T StringList;35 Headers: TDictionaryStringString; 37 36 Cookies: TCookieList; 38 37 Post: TQueryParameterList; 38 procedure Assign(Source: THTTPRequest); 39 39 procedure Clear; 40 40 constructor Create; … … 47 47 ContentType: string; 48 48 Content: TMemoryStreamEx; 49 Headers: T StringList;49 Headers: TDictionaryStringString; 50 50 Cookies: TCookieList; 51 procedure Assign(Source: THTTPResponse); 51 52 procedure Clear; 52 53 constructor Create; … … 62 63 SessionId: string; 63 64 Session: TStringList; 64 constructor Create; 65 procedure Assign(Source: THTTPHandlerData); 66 constructor Create; virtual; 65 67 destructor Destroy; override; 66 68 end; … … 145 147 WriteString('<h5>Request HTTP headers</h5>'); 146 148 for I := 0 to Request.Headers.Count - 1 do begin; 147 WriteString(Request.Headers. Strings[I]+ '<br/>');149 WriteString(Request.Headers.Items[I].Value + '<br/>'); 148 150 end; 149 151 … … 171 173 with Response.Content do 172 174 for I := 0 to Response.Headers.Count - 1 do begin; 173 WriteString(Response.Headers. Strings[I]+ '<br/>');175 WriteString(Response.Headers.Items[I].Value + '<br/>'); 174 176 end; 175 177 … … 184 186 begin 185 187 with HandlerData, Response.Content do begin 186 WriteString('<html><body>' + Format(SPageNotFound, [Request.Path ]) + '</body></html>');188 WriteString('<html><body>' + Format(SPageNotFound, [Request.Path.Implode('/', StrToStr)]) + '</body></html>'); 187 189 end; 188 190 end; … … 206 208 begin 207 209 with HandlerData do begin 208 FileName := DocumentRoot + Request.Path;210 FileName := DocumentRoot + DirectorySeparator + Request.Path.Implode('/', StrToStr); 209 211 if FileExists(FileName) then begin 210 212 Response.Headers.Values['Content-Type'] := GetMIMEType(Copy(ExtractFileExt(FileName), 2, 255)); 211 BinaryFile := TFileStream.Create(FileName, fmOpenRead); 212 Response.Content.WriteStream(BinaryFile, BinaryFile.Size); 213 BinaryFile.Destroy; 213 try 214 BinaryFile := TFileStream.Create(FileName, fmOpenRead); 215 Response.Content.WriteStream(BinaryFile, BinaryFile.Size); 216 finally 217 BinaryFile.Free; 218 end; 214 219 end else 215 220 with Response.Content do begin 216 WriteLn(Format(SFileNotFound, [Request.Path ]));217 WriteString('<html><body>' + Format(SFileNotFound, [Request.Path ]) + '</body></html>');221 WriteLn(Format(SFileNotFound, [Request.Path.Implode('/', StrToStr)])); 222 WriteString('<html><body>' + Format(SFileNotFound, [Request.Path.Implode('/', StrToStr)]) + '</body></html>'); 218 223 end; 219 224 end; … … 234 239 { THTTPResponse } 235 240 241 procedure THTTPResponse.Assign(Source: THTTPResponse); 242 begin 243 Content.Assign(Source.Content); 244 ContentType := Source.ContentType; 245 Cookies.Assign(Source.Cookies); 246 Headers.Assign(Source.Headers); 247 end; 248 236 249 procedure THTTPResponse.Clear; 237 250 begin … … 245 258 Content := TMemoryStreamEx.Create; 246 259 Cookies := TCookieList.Create; 247 Headers := T StringList.Create;260 Headers := TDictionaryStringString.Create; 248 261 end; 249 262 … … 277 290 { THTTPRequest } 278 291 292 procedure THTTPRequest.Assign(Source: THTTPRequest); 293 begin 294 Content.Assign(Source.Content); 295 ContentType := Source.ContentType; 296 Cookies.Assign(Source.Cookies); 297 Headers.Assign(Source.Headers); 298 Post.Assign(Source.Post); 299 Method := Source.Method; 300 Query.Assign(Source.Query); 301 Path.Assign(Source.Path); 302 end; 303 279 304 procedure THTTPRequest.Clear; 280 305 begin 281 306 Post.Clear; 282 307 Content.Clear; 283 QueryParts.Clear;308 Path.Clear; 284 309 Cookies.Clear; 285 310 Headers.Clear; … … 291 316 Post := TQueryParameterList.Create; 292 317 Query := TQueryParameterList.Create; 293 QueryParts:= TListString.Create;294 Headers := T StringList.Create;318 Path := TListString.Create; 319 Headers := TDictionaryStringString.Create; 295 320 Cookies := TCookieList.Create; 296 321 Content := TMemoryStreamEx.Create; … … 302 327 Post.Free; 303 328 Query.Free; 304 QueryParts.Free;329 Path.Free; 305 330 Headers.Free; 306 331 Cookies.Free; … … 400 425 401 426 { THTTPHandlerData } 427 428 procedure THTTPHandlerData.Assign(Source: THTTPHandlerData); 429 begin 430 Request.Assign(Source.Request); 431 Response.Assign(Source.Response); 432 Session.Assign(Source.Session); 433 Server := Source.Server; 434 SessionId := Source.SessionId; 435 end; 402 436 403 437 constructor THTTPHandlerData.Create;
Note:
See TracChangeset
for help on using the changeset viewer.