powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / HttpListener: виснет при вызове HttpListenerContext.GetContext();
25 сообщений из 27, страница 1 из 2
HttpListener: виснет при вызове HttpListenerContext.GetContext();
    #39821106
Фотография Strassebahn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите пожалуйста разобраться с HttpListener.
скачал пример с интернета,
на строке

Код: c#
1.
HttpListenerContext context = listener.GetContext();



виснет, да и строка
Код: c#
1.
listener.Prefixes.Add(s);


исполняется несколько секунд, хотя комп новый.
Пробовал тот же код на другом компе - тот же "успех"

Внизу - полные исходники.

Хотелось бы знать что у меня не так и может скинет кто-то опытному ламеру работающий пример?



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Text;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            if (!HttpListener.IsSupported)
            {
                Console.WriteLine("Windows XP SP2 or Server 2003 is required to use the HttpListener class.");
                return;
            }

            var prefixes = new List<string>() { "http://lenta/" };

            // Create a listener.
            HttpListener listener = new HttpListener();
            // Add the prefixes.
            foreach (string s in prefixes)
            {
                listener.Prefixes.Add(s);
            }
            listener.Start();
            Console.WriteLine("Listening...");
            while (true)
            {
                // Note: The GetContext method blocks while waiting for a request.
                HttpListenerContext context = listener.GetContext();

                HttpListenerRequest request = context.Request;

                string documentContents;
                using (Stream receiveStream = request.InputStream)
                {
                    using (StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8))
                    {
                        documentContents = readStream.ReadToEnd();
                    }
                }
                Console.WriteLine($"Recived request for {request.Url}");
                Console.WriteLine(documentContents);

                // Obtain a response object.
                HttpListenerResponse response = context.Response;
                // Construct a response.
                string responseString = "<HTML><BODY> Hello world!</BODY></HTML>";
                byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString);
                // Get a response stream and write the response to it.
                response.ContentLength64 = buffer.Length;
                System.IO.Stream output = response.OutputStream;
                output.Write(buffer, 0, buffer.Length);
                // You must close the output stream.
                output.Close();
            }
            listener.Stop();
        }
    }
}
...
Рейтинг: 0 / 0
HttpListener: виснет при вызове HttpListenerContext.GetContext();
    #39821237
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Strassebahn
Код: c#
1.
http://lenta/



Откуда это взялось? Что за lenta ? Хотя бы в hosts прописал? А права есть на прослушивание?
...
Рейтинг: 0 / 0
HttpListener: виснет при вызове HttpListenerContext.GetContext();
    #39821261
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Strassebahnвиснет при вызове HttpListenerContext.GetContext();
Он не виснет, он начинает ожидать запроса.

Чтобы он смог ответить на запрос, студия должна быть запущена от имени администратора (на 7ке не уверен, но на 10ке точно), имя lenta должно резолвиться в комп, на котором поднят HttpListener, на компе должен быть открыт 80й порт.

Для начала попробуйте Prefixes.Add($" http://*/") и обратиться по http://localhost.
...
Рейтинг: 0 / 0
HttpListener: виснет при вызове HttpListenerContext.GetContext();
    #39821262
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторWindows XP SP2 or Server 2003 is requiredor upper тогда уж. А то как это на 10ке у меня все работает?)

авторlistener.Stop();Не имеет смысла без выхода из цикла while (true). И с выходом тоже не имеет - listener и так прихлопнется при выходе из программы.
...
Рейтинг: 0 / 0
HttpListener: виснет при вызове HttpListenerContext.GetContext();
    #39821267
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторисполняется несколько секунд
попробуйте просто
Код: c#
1.
listener.Prefixes.Add("http://*/");


без листов и циклов.
...
Рейтинг: 0 / 0
HttpListener: виснет при вызове HttpListenerContext.GetContext();
    #39821291
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообще то https://www.lenta.ru/
...
Рейтинг: 0 / 0
HttpListener: виснет при вызове HttpListenerContext.GetContext();
    #39821294
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще момент забыл сказать, listner - это же свой сервер
поэтому любой символьный адрес должен быть в host
поэтому не парьтесь и просто укажите ip адрес
...
Рейтинг: 0 / 0
HttpListener: виснет при вызове HttpListenerContext.GetContext();
    #39821295
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а то сверху я протупил ), решил, что идет запрос к ленте.ру )
...
Рейтинг: 0 / 0
HttpListener: виснет при вызове HttpListenerContext.GetContext();
    #39821299
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запускаем от имени администратора, через браузер набираем http://127.0.0.1:9988 и видим название метода GET
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
			HttpListener lst = new HttpListener();
			lst.Prefixes.Add("http://127.0.0.1:9988/");
			lst.Start();

			var ctx = lst.GetContext();

			Console.WriteLine(ctx.Request.HttpMethod);

			Console.ReadKey();
...
Рейтинг: 0 / 0
HttpListener: виснет при вызове HttpListenerContext.GetContext();
    #39821518
Фотография Strassebahn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

www.lenta.ru - новостной сайт :)
...
Рейтинг: 0 / 0
HttpListener: виснет при вызове HttpListenerContext.GetContext();
    #39821521
Фотография Strassebahn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

Запущено от имени администратора
...
Рейтинг: 0 / 0
HttpListener: виснет при вызове HttpListenerContext.GetContext();
    #39821526
Фотография Strassebahn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79,

то есть
Код: c#
1.
listener.Prefixes.Add("https://www.google.com/");


без указания в host работать не будет?
...
Рейтинг: 0 / 0
HttpListener: виснет при вызове HttpListenerContext.GetContext();
    #39821552
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StrassebahnArm79,

то есть
Код: c#
1.
listener.Prefixes.Add("https://www.google.com/");



без указания в host работать не будет?
Не знаю, я бредовые версии не отрабатываю ))
...
Рейтинг: 0 / 0
HttpListener: виснет при вызове HttpListenerContext.GetContext();
    #39821553
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скорее всего запустится, и будет перехватывать все запросы с локального компьютера, адресованные гуглу
...
Рейтинг: 0 / 0
HttpListener: виснет при вызове HttpListenerContext.GetContext();
    #39821686
Фотография Strassebahn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79,

всё равно виснет на
Код: c#
1.
HttpListenerContext context = listener.GetContext();



в гугл с браузер заходил, выполнял запросы, ничего не нет, виснет и всё;
:(
...
Рейтинг: 0 / 0
HttpListener: виснет при вызове HttpListenerContext.GetContext();
    #39821704
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А может быть вы скажете, какую задачу пытаетесь решить?
...
Рейтинг: 0 / 0
HttpListener: виснет при вызове HttpListenerContext.GetContext();
    #39821731
Фотография Strassebahn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79,

нужно обработать GET и POST запросы с сайта, почти целиком состоящего из flash

Обычно сайты парсятся через HttpWebRequest, но у этого все нужные индексы скрыты в flash-компонентах.

Через Fiddler видны GET и POST запросы/ответы (request/response)
это именно то что нужно вытянуть

Хочу написать WinForm программу, в одной вкладке вебраузер,
во второй - визуализация программной обработки GET и POST от внутреннего браузера

То есть программа с встроенным браузером и обработчиком HTTP responces от этого браузера.
...
Рейтинг: 0 / 0
HttpListener: виснет при вызове HttpListenerContext.GetContext();
    #39821752
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так может просто поднять слушатель (HttpListener) на 127.0.0.1 на каком-нибудь порту, а в браузере указать этот адрес в качестве обычного прокси?

Вот например ссылка на такой прокси https://github.com/krolth/Http-Proxy-dotnet/blob/master/Proxy.cs
...
Рейтинг: 0 / 0
HttpListener: виснет при вызове HttpListenerContext.GetContext();
    #39821810
Фотография Strassebahn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79,

спасибо, попробую
...
Рейтинг: 0 / 0
HttpListener: виснет при вызове HttpListenerContext.GetContext();
    #39822675
Strassebahn2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79,

Привет
сколько возьмёшь чтобы написать простейшую но работающую программу по HttpListener?

(Меня забанили на 3 дня за офтопик)
...
Рейтинг: 0 / 0
HttpListener: виснет при вызове HttpListenerContext.GetContext();
    #39822834
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача не простейшая
1. Нужно уметь перехватить запрос,
2. один в один повторить его для внешнего ресурса
3. принять или не принять риски того, что ssl-запросы не будут обрабатываться или браузер будет ругаться из-за отсутствия доверия к сертификату
4. Добавить точки интеграции для внедрения управления поведением для отдельных запросов.

В общем, полет фантазии неисчерпаем

А простейшую (лог запросов) - попробую написать в выходные, покажу результат - устроит, договоримся
...
Рейтинг: 0 / 0
HttpListener: виснет при вызове HttpListenerContext.GetContext();
    #39822961
Strassebahn2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79,

Достаточно WinForm с двумя в вкладками, в одной WebBbrowser

в другой отображать исходящие Http GET/POST запросы, fiddler2:

GET https://www.google.com/ HTTP/1.1
Host: www.google.com
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Accept-Encoding: gzip, deflate, br


Можна оформить работу через Upwork,

или по PayPal либо что-то вам оплачу кредиткой на оговоренную сумму

ваш скайп или вайбер?
...
Рейтинг: 0 / 0
HttpListener: виснет при вызове HttpListenerContext.GetContext();
    #39823970
Strassebahn2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79,

Ну, это работает если есть обращение к этому IPEndPoint (я написал тест, нормально пошло).

А как заставить именно компонент WebBrowser с WinForm программы слать свои запросы в этот IPEndPoint?
...
Рейтинг: 0 / 0
HttpListener: виснет при вызове HttpListenerContext.GetContext();
    #39824174
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Легко )) я в Питере, ещё не успел нормально посидеть за ноутом, но есть в app.config настройка прокси. Веб браузер автоматом её подхватит
...
Рейтинг: 0 / 0
HttpListener: виснет при вызове HttpListenerContext.GetContext();
    #39824394
Strassebahn2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79Легко )) я в Питере, ещё не успел нормально посидеть за ноутом, но есть в app.config настройка прокси. Веб браузер автоматом её подхватит

Да, я нашёл пример, но что-то пошло не так

Нужна помощь с написанием программы - в одной вкладке webbrowser, во второй Listbox с исходящими Http запросами

Winform c WebBrowser и скриншоты что нужно я вам вышлю, чтобы сэкономить время
HttpListener, TCPListener - реализация не имеет значения
Готов расстаться со 100 евро
skype circle__40
viber: +39 327 912 4149

П С FiddlerCore ( https://www.telerik.com/fiddler/fiddlercore)возможно помог бы, но неохота тащить в программу сторонние компоненты
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / HttpListener: виснет при вызове HttpListenerContext.GetContext();
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]