private async Task HandleContextAsync(HttpListenerContext listenerContext) { // TODO: implement request handling var text = new StreamReader(listenerContext.Request.InputStream).ReadToEnd(); /*Console.WriteLine(text); * //var headers = listenerContext.Request.Headers; * * listenerContext.Response.StatusCode = (int)HttpStatusCode.OK; * using (var writer = new StreamWriter(listenerContext.Response.OutputStream)) * { * var req = listenerContext.Request; * //foreach(var header in headers) * writer.WriteLine("hello"); * } * return;*/ Console.WriteLine("Обработка"); var request = listenerContext.Request; var method = DataBaseController.GetMethod(request.HttpMethod); var commandParameter = request.RawUrl; var stream = new MemoryStream(Encoding.Unicode.GetBytes(text)); Tuple <HttpStatusCode, Stream> result; try { result = controller.HandleRequest(method, commandParameter, stream); } catch (Exception e) { Console.WriteLine("Captured exception " + e); result = controller.HandleException(e); } Console.WriteLine("After"); using (var writer = new StreamWriter(listenerContext.Response.OutputStream)) { using (var reader = new StreamReader(result.Item2)) { listenerContext.Response.StatusCode = (int)result.Item1; result.Item2.Position = 0; var answer = reader.ReadToEnd(); writer.WriteLine("Answer: " + answer); } } }
public StatServer() { listener = new HttpListener(); controller = new DataBaseController(); }