HttpWebRequest, HttpWebResponse и IE
От: Аноним  
Дата: 08.07.10 12:45
Оценка:
Мы зачитываем страницы через HttpWebRequest и HttpWebResponse.
Как модифицировать код внизу чтобы сервер бумал что запрос идет через браузер IE?

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(myURL);
request.Credentials = System.Net.CredentialCache.DefaultCredentials; // ???
//request.CookieContainer = ???
request.Method = "GET";
//request.ContentType = "text/html";
request.ContentType = "application/x-www-form-urlencoded";

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

Stream stream = response.GetResponseStream();
StreamReader streamReader = StreamReader(stream);
string myPage = streamReader.ReadToEnd();
Re: HttpWebRequest, HttpWebResponse и IE
От: ksg71 Германия  
Дата: 08.07.10 12:50
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Мы зачитываем страницы через HttpWebRequest и HttpWebResponse.

А>Как модифицировать код внизу чтобы сервер бумал что запрос идет через браузер IE?

вероятно записать в свойство UserAgent строку отсюда
Das Reich der Freiheit beginnt da, wo die Arbeit aufhört. (c) Karl Marx
Re[2]: HttpWebRequest, HttpWebResponse и IE
От: Аноним  
Дата: 08.07.10 13:07
Оценка:
Здравствуйте, ksg71, Вы писали:


А>>Мы зачитываем страницы через HttpWebRequest и HttpWebResponse.

А>>Как модифицировать код внизу чтобы сервер бумал что запрос идет через браузер IE?

K>вероятно записать в свойство UserAgent строку отсюда


Большое спасибо
Ссылка не работает, то наверное понятно на что смотреть.
Это единственное свойство которое надо менять?
Re[3]: HttpWebRequest, HttpWebResponse и IE
От: hardcase Пират http://nemerle.org
Дата: 08.07.10 13:34
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, ksg71, Вы писали:



А>>>Мы зачитываем страницы через HttpWebRequest и HttpWebResponse.

А>>>Как модифицировать код внизу чтобы сервер бумал что запрос идет через браузер IE?

K>>вероятно записать в свойство UserAgent строку отсюда


А>Большое спасибо

А>Ссылка не работает, то наверное понятно на что смотреть.

Вот рабочая.
/* иЗвиНите зА неРовнЫй поЧерК */
Re: HttpWebRequest, HttpWebResponse и IE
От: andrey82  
Дата: 08.07.10 13:44
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Мы зачитываем страницы через HttpWebRequest и HttpWebResponse.

А>Как модифицировать код внизу чтобы сервер бумал что запрос идет через браузер IE?

А>
А>//request.CookieContainer = ???
А>


Я делал так: (куки будут использоваться во всех запросах)
CookieContainer cc = new CookieContainer();
...
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(myURL);
request.CookieContainer = cc;



Вообще для полноценной имитации IE (или браузера вообще; например для отработки JS на страницах) лучше использовать что-то типа WatiN. Впрочем, это IE и будет
Re[2]: HttpWebRequest, HttpWebResponse и IE
От: Аноним  
Дата: 16.07.10 03:42
Оценка:
Здравствуйте, andrey82, Вы писали:

A>Я делал так: (куки будут использоваться во всех запросах)

A>
A>CookieContainer cc = new CookieContainer();
A>...
A>HttpWebRequest request = (HttpWebRequest)WebRequest.Create(myURL);
A>request.CookieContainer = cc;
A>



A>Вообще для полноценной имитации IE (или браузера вообще; например для отработки JS на страницах) лучше использовать что-то типа WatiN. Впрочем, это IE и будет



1. У меня на форме есть WebBroser control. Я через него логинусь на сайт (ввожу имя и пароль). Потом начинаю тянуть странички с сайта чарез HttpWebRequest. Как мне вытянуть CookieContainer из WebBroser control чтобы передать их в request.CookieContainer?

2. Можно ли вместо WebBroser control использовать некий контрол из WatiN? WatiN вроде все делает, но открывает окно IE, а мне это совсем не нужно.
Re[3]: HttpWebRequest, HttpWebResponse и IE
От: andrey82  
Дата: 16.07.10 05:25
Оценка:
Здравствуйте, Аноним, Вы писали:


А>1. У меня на форме есть WebBroser control. Я через него логинусь на сайт (ввожу имя и пароль). Потом начинаю тянуть странички с сайта чарез HttpWebRequest. Как мне вытянуть CookieContainer из WebBroser control чтобы передать их в request.CookieContainer?


Сайт полностью на DHTML? (Без Flash и т.п. вставок)? Тогда WatiN нормально справится с задачей ввода текста в поля и нажатием кнопки:

ie.TextField("code").TypeText(textvalue);
ie.Button(WatiN.Core.Find.By("onclick", "codeCheck();")).Click();


А>2. Можно ли вместо WebBroser control использовать некий контрол из WatiN? WatiN вроде все делает, но открывает окно IE, а мне это совсем не нужно.


WatiN, насколько я знаю, использует отдельно создаваемый процесс IE... про контрол не понял .

Для скрытия создаваемого WatiN'ом процесса IE:
WatiN.Core.Settings.Instance.MakeNewIeInstanceVisible = false;
WatiN.Core.Settings.AutoMoveMousePointerToTopLeft = false;

using (WatiN.Core.IE ie = new WatiN.Core.IE(url))
{
...
}
Re[4]: HttpWebRequest, HttpWebResponse и IE
От: Аноним  
Дата: 16.07.10 05:57
Оценка:
У меня выбор: использовать WatiN или нет

Без WatiN
Сейчас работает так (ну или пытается):
На форме есть стандартный System.Windows.Forms.WebBrowser контрол и в него грузится сайт.
На сайте я ввожу user and password.
Из webBrowser.Document.Cookie cтрою System.Net.CookieContainer и передаю это в HttpWebRequest.
Но GetResponse валится.
Прямо copy-n-paste с экрана:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(myURL);
request.CookieContainer = CreateCookieContainer(webBrowser.Document.Cookie, webBrowser.Document.Domain);
request.Method = "GET";
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.2; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)"; //??
request.ContentType = "application/x-www-form-urlencoded";

System.Net.HttpWebResponse response = (System.Net.HttpWebResponse)request.GetResponse(); //Exception


Второе, что мне приходит в голову — это использовать WatiN
Тут я не понимаю как ему передать юзера и пароль.
Это не работает:
IE browser = new IE(url, new LogonDialogHandler("user", "pwd"), false);


Еще мне хотелось бы вставить browser как контрол в форму. Но можно и скрыть, про
WatiN.Core.Settings.Instance.MakeNewIeInstanceVisible = false;
WatiN.Core.Settings.AutoMoveMousePointerToTopLeft = false;
я не знал.

В общем либо понять как грамотно через HttpWebRequest запрос выполнить либо как залогиниться через WatiN
HttpWebRequest мне пока кажется предпочтительнее.



А>>1. У меня на форме есть WebBroser control. Я через него логинусь на сайт (ввожу имя и пароль). Потом начинаю тянуть странички с сайта чарез HttpWebRequest. Как мне вытянуть CookieContainer из WebBroser control чтобы передать их в request.CookieContainer?


A>Сайт полностью на DHTML? (Без Flash и т.п. вставок)? Тогда WatiN нормально справится с задачей ввода текста в поля и нажатием кнопки:


A>
A>ie.TextField("code").TypeText(textvalue);
A>ie.Button(WatiN.Core.Find.By("onclick", "codeCheck();")).Click();
A>


А>>2. Можно ли вместо WebBroser control использовать некий контрол из WatiN? WatiN вроде все делает, но открывает окно IE, а мне это совсем не нужно.


A>WatiN, насколько я знаю, использует отдельно создаваемый процесс IE... про контрол не понял .


A>Для скрытия создаваемого WatiN'ом процесса IE:

A>
A>WatiN.Core.Settings.Instance.MakeNewIeInstanceVisible = false;
A>WatiN.Core.Settings.AutoMoveMousePointerToTopLeft = false;

A>using (WatiN.Core.IE ie = new WatiN.Core.IE(url))
A>{
A>...
A>}
A>
Re[5]: HttpWebRequest, HttpWebResponse и IE
От: andrey82  
Дата: 16.07.10 06:16
Оценка:
Здравствуйте, Аноним, Вы писали:

А>У меня выбор: использовать WatiN или нет


А>Второе, что мне приходит в голову — это использовать WatiN

А>Тут я не понимаю как ему передать юзера и пароль.
А>Это не работает:
А>
А>IE browser = new IE(url, new LogonDialogHandler("user", "pwd"), false);
А>


Логин и пароль на сайте вводятся в web-контрол или диалоговое окно?

А>В общем либо понять как грамотно через HttpWebRequest запрос выполнить либо как залогиниться через WatiN

А>HttpWebRequest мне пока кажется предпочтительнее.
Re[6]: HttpWebRequest, HttpWebResponse и IE
От: Аноним  
Дата: 16.07.10 12:39
Оценка:
Здравствуйте, andrey82, Вы писали:

A>Логин и пароль на сайте вводятся в web-контрол или диалоговое окно?


Контрола нету. Вот так:

LogonDialogHandler logonDialogHandler = new LogonDialogHandler("user", "pwd");
IE browser = new IE(url, logonDialogHandler, false);


в результате открывается новое окно IE


А>>В общем либо понять как грамотно через HttpWebRequest запрос выполнить либо как залогиниться через WatiN

А>>HttpWebRequest мне пока кажется предпочтительнее.
Re[3]: HttpWebRequest, HttpWebResponse и IE
От: Sinclair Россия https://github.com/evilguest/
Дата: 20.07.10 12:32
Оценка:
Здравствуйте, Аноним, Вы писали:



А>1. У меня на форме есть WebBroser control. Я через него логинусь на сайт (ввожу имя и пароль). Потом начинаю тянуть странички с сайта чарез HttpWebRequest. Как мне вытянуть CookieContainer из WebBroser control чтобы передать их в request.CookieContainer?


1. Зачем вы это делаете? Имхо, сочетать WebBrowser с HttpWebRequest — не лучшая идея.
2. Не мучайте себя, поставьте fiddler и посмотрите полную сессию под ним. Потом скопируйте все нужные хидеры в HttpWebRequest.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.