.Net Winfoms WebBrowser control - Как разрешить операцию отправки при загрузке контента из Stream? - PullRequest
0 голосов
/ 28 мая 2011

Я использую элемент управления WebBrowser в приложении Windows Forms в Visual Studio 2010 - для .Net Framework 3.5.

Я загрузил содержимое элемента управления WebBrowser, установив свойство DocumentStream .Содержимое потока - от ответа на запрос Http (POST) до сторонней веб-страницы, которая вызывается в коде с использованием объекта HttpWebRequest.Нам нужно использовать тип глагола POST-запроса.Форма заполняется данными, основанными на параметрах запроса.

В приложении Windows пользователю необходимо заполнить несколько дополнительных текстовых полей и затем отправить.После загрузки через поток страница не знает полного URL исходной страницы.Поэтому отправить не удается (отображает имя страницы в элементе управления WebBrowser).

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

Ниже приведен код (пока):

//Class to call website to make http post
var webBridge = new WebCallHandler();
//Make the request. Response returned as string
var result = webBridge.MakeHttpRequest();

//Get string as stream
var byteArray = Encoding.ASCII.GetBytes(result);
var stream = new MemoryStream(byteArray) { Position = 0 };
//webBrowser1.Url = new Uri(URL);
webBrowser1.DocumentStream = stream;
//Need to set the context of the page like "http://example.com/somepage.aspx"
var dom = webBrowser1.Document.DomDocument;

Ответы [ 2 ]

1 голос
/ 28 мая 2011

Если вы заполнили переменную result (которая выглядит как строка), вы довольно легко сможете изменить содержимое.

Используя, например, Регулярные выражения или HTML Agility Pack для поиска

<form ... action="relative-url" ...

и замены его на

<form ... action="http://somedomain.com/relative-url" ...

, а затем передачи его в свойство DocumentStream вашего браузера.

0 голосов
/ 30 мая 2011

Я искал строку, возвращаемую из HttpWebrequest для атрибута действия элемента формы . Это только показало название страницы, полученной от httpWebRequest. Я изменил его в коде, чтобы он был полным URL.

Спасибо за ваш комментарий, Кевин. Это было подсказкой, которая помогла.

...