Запрос на чтение URL-адреса в строку консольного приложения C #

#c# #server #console-application

#c# #сервер #консоль-приложение

Вопрос:

Я пытаюсь прочитать URL-запрос, который был отправлен через браузер на мой сервер. Итак, в основном, если я наберу http://localhost:8080/geoserver / в качестве моего URL сервер ответит и отправит изображение, которое будет отображаться должным образом. Теперь я пытаюсь преобразовать URL-адрес в строку, поэтому, если, например, я наберуhttp://localhost:8080/geoserver/1234 Я мог бы извлечь 1234 из моей строки URL, а затем изменить размер, повернуть, .. мое изображение на основе входных данных и отобразить его. Я пытался с string my_url = listen.GetContext().toString(); , но я не получаю URL-адрес, который я ввел.

Мой код:

  static void Main(string[] args)
        {               
            HttpListener listen = new HttpListener();
            string url = "http://localhost";
            string port = "";
            Console.Write("Nastavite port:");
            port = Console.ReadLine();
            url = url   ":"   port   "/geoserver/";
            listen.Prefixes.Add(url);

            try
            {
                listen.Start();
            }
            catch(Exception e)
            {
                Console.WriteLine("Ta port je zaseden");
                Console.ReadKey();
                Environment.Exit(0);
            }

            while (true)
            {
                Console.WriteLine("Cakam...");
                HttpListenerContext kontekst = listen.GetContext();



                string msg = "hello world";
              //  kontekst.Response.ContentLength64 = Encoding.UTF8.GetByteCount(msg);
                kontekst.Response.StatusCode = (int)HttpStatusCode.OK;


                using (Stream stream = kontekst.Response.OutputStream)
                using (Image image = Image.FromFile("jpg.png"))
                using (MemoryStream ms = new MemoryStream())
                using (StreamWriter writer = new StreamWriter(stream))
                {
                    image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                    string base64 = Convert.ToBase64String(ms.ToArray());
                    writer.WriteLine($"<html><img src="data: image / png; base64, {base64} "></html>");
                } 

                Console.WriteLine("Sporočilo poslano");

            }

        }
  

Комментарии:

1. Есть ли особая причина, по которой вы запускаете свой собственный веб-сервер?

2. Я хотел бы запустить его в своей локальной сети и кое-чему научиться. Изображения в формате TIFF появятся в ближайшем будущем. Пытаюсь создать приложение, похожее на «карты Google», но, очевидно, не настолько продвинутое.

Ответ №1:

Вам нужно получить URI от kontekst.Request.Url и самостоятельно проанализировать это значение, чтобы решить, что вам нужно делать.