Прослушивание HTTP-запросов в приложении Windows Forms - PullRequest
0 голосов
/ 08 февраля 2012

Мне нужно написать приложение .net windows forms, которое откроет веб-страницу, а затем сможет реагировать на нажатия пользователем определенных ссылок на веб-странице. В спецификации, которую мне дали, ссылки на веб-странице просто являются ссылками http.

Есть ли способ, чтобы у моего приложения .net был минимальный веб-сервер, который позволял бы ему обрабатывать запросы http для данного порта?

Ответы [ 6 ]

1 голос
/ 09 февраля 2012

Пожалуйста, посмотрите на элемент управления WebBrowser и, в частности, свойство "ObjectForScripting".Если вы установите его в родительскую форму, вы на самом деле сможете обрабатывать события javascript со страницы, загруженной в веб-браузер, в вашем коде c # !!!

Надеюсь, это поможет!

1 голос
/ 09 февраля 2012
1 голос
/ 09 февраля 2012

Если все, что вам нужно, это показать веб-страницу, и у вас нет никаких ограничений на используемый браузер, тогда элемент управления WebBrowser сделает свое дело.

  1. Перетащите его на форму
  2. Установите свойство Url на странице, которую необходимо отобразить
  3. Присоедините к Навигация событие

Теперь вы можете отвечать на клики, отменять их, делать все что угодно.Если он просто отвечает на нужные вам клики на стороне клиента, вам не нужен веб-сервер.Если вам действительно нужен веб-сервер, WinForms не должен иметь к нему никакого отношения.

webBrowser1.Navigating += new WebBrowserNavigatingEventHandler(webBrowser1_Navigating);

private void webBrowser1_Navigating(object sender, 
    WebBrowserNavigatingEventArgs e)
{
   //Do your thing... maybe set e.Cancel if you don't to navigate
}
0 голосов
/ 29 июня 2018

Вы можете использовать Нэнси

enter image description here

Сайт проекта: https://www.codeproject.com/Articles/694907/Embed-a-web-server-in-a-windows-service

0 голосов
/ 08 февраля 2012

Я по-разному истолковал вопрос для других пользователей, так что, возможно, я далеко, но я прочитал его, когда он пытается отобразить веб-страницы из Интернета и реагирует на то, что пользователь нажимает на ссылку внутри веб-страницы.

Единственный способ, которым я могу думать об этом, - это использовать какую-то форму рендерера, например webkit , и использовать это для перехвата кликов, которые делает пользователь.

0 голосов
/ 08 февраля 2012

Есть разные способы сделать это в зависимости от того, какая функциональность вам нужна. Если все, что вам нужно сделать, это ответить на события щелчка, и вам не нужна «полная» поддержка протокола http, вы можете просто открыть сокет и проанализировать, что поступает из браузера.

В качестве альтернативы вы можете использовать HttpListener, который позаботится о разборе протокола http и относительно прост в использовании. Для того, что я думаю, вам нужно, это, вероятно, предпочтительный подход. Простой, некомпилируемый пример здесь: https://gist.github.com/1770645.

«Святой Грааль» - это хостинг ASP.NET в вашем приложении windows form. Я сделал это, и это довольно сложно. Среда выполнения должна быть размещена в отдельном домене приложений, поэтому вы в конечном итоге перепрыгиваете через множество обручей, чтобы все работало и подключалось. Это также включает в себя написание реализации HttpWorkerRequest, которая более полнофункциональна, чем фреймворк, предоставляющий SimpleWorkerRequest. Кстати, это также работает для служб Windows, что дает вам отличный способ обеспечить управление службами и мониторинг через браузер без зависимости от IIS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...