@tmtm653

Как передать данные из класса третьего уровня в класс первого уровня?

Как передать данные из класса третьего уровня в класс первого уровня?

Мне необходимо передать данные из `HTTPServer` в `WinForm`.
Я использую `HTTPServer` - ссылка(https://github.com/jeske/SimpleHttpServer)

Я перенёс проект `SimpleHttpServer`
https://github.com/jeske/SimpleHttpServer/tree/mas...
в свой проект `WinForm`.
Я запускаю `HTTPServer` с помощью кода:
Код
spoiler
private void Form1_Load(object sender, EventArgs e)
        {
            StartHttpServer();
        }
        
        static void StartHttpServer()
        {
            try
            {
                var route_config = new List<Route>();
                HttpServer httpServer = new HttpServer(8080, route_config);
 
                Thread thread = new Thread(new ThreadStart(httpServer.Listen));
                thread.Start();
            }
            catch (Exception ex)
            {
                string s = ex.Message;
                string t = ex.StackTrace;
                // throw;
                MessageBox.Show(s + " \r\n "
                                  + t);
            }
 
        }


Если сервер получает POST запрос c JSON, то запрос приходит класс `HttpProcessor.cs` метод `HandleClient`.
Класс `HttpProcessor.cs` метод `HandleClient`
Код
spoiler
public void HandleClient(TcpClient tcpClient)
        {
                Stream inputStream = GetInputStream(tcpClient);
                Stream outputStream = GetOutputStream(tcpClient);
                HttpRequest request = GetRequest(inputStream, outputStream);
 
            #region Мои изменения.
            // string s = request.
            RequestContent?.Invoke(request);
            #endregion
 
            // направить и обработать запрос... (route and handle the request...)
            HttpResponse response = RouteRequest(inputStream, outputStream, request);      
          
 
            // *
            //    Console.WriteLine("{0} {1}",response.StatusCode,request.Url);
            // построить ответ по умолчанию для ошибок (build a default response for errors)
            if (response.Content == null) {
                    if (response.StatusCode != "200") {
                        response.ContentAsUTF8 = string.Format("{0} {1} <p> {2}", response.StatusCode, request.Url, response.ReasonPhrase);
                    }
                }
 
                WriteResponse(outputStream, response);
 
                outputStream.Flush();
                outputStream.Close();
                outputStream = null;
 
                inputStream.Close();
                inputStream = null;
 
        }


Чтобы получить JSON из класс `HttpProcessor.cs` метод `HandleClient`.
я планирую использовать событие `public event Action RequestContent;`.
Код
spoiler
public void HandleClient(TcpClient tcpClient)
{
            // ....
            RequestContent?.Invoke(request);
             // ....
 
}


Вопрос.
1. Как сделать, чтобы при поступлении POST запроса с JSON, данные из класса `HttpProcessor.cs` автоматически передавались в класс `Form1` ?
2. Есть ли другие решения в замен использования `public event Action RequestContent;`?


5d244f0fddb8d796708528.png
  • Вопрос задан
  • 85 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы