C # войти на сайт и скачать источник с помощью WebRequest - проблема с куки - PullRequest
1 голос
/ 29 сентября 2011

Мне нужно войти на веб-сайт и загрузить исходный код с разных страниц при входе в систему. Я могу сделать это довольно легко при использовании класса Windows Forms WebBrowser, однако это не подходит, и мне нужно иметь возможность сделать это с WebRequest или одним из других. К сожалению, мне не нравится, как я обращаюсь с куки.

Я использую следующий код и получаю следующий ответ: {"w_id": "LoginForm2_6", "message": "Пожалуйста, включите куки в вашем браузере, чтобы вы могли войти в систему.", "Success": 0, " showLink "ложь}

string url2 = "%2Fapp%2Futils%2Flogin_form%2Fredirect%2Fhome";
string login = "username";
string password = "password";
string w_id = "LoginForm2_6";
string loginurl = "http://loginurl.com";

string cookieHeader;

WebRequest req = WebRequest.Create(loginurl);
req.Proxy = WebRequest.DefaultWebProxy;
req.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
req.Proxy.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
req.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
req.Method = "POST";
string postData = string.Format("w_id={2}&login={0}&password={1}&url2={3}", login, password, w_id, url2);
byte[] bytes = Encoding.ASCII.GetBytes(postData);
req.ContentLength = bytes.Length;
using (Stream os = req.GetRequestStream())
{
os.Write(bytes, 0, bytes.Length);
}
WebResponse resp = req.GetResponse();
cookieHeader = resp.Headers["Set-cookie"];

string pageSource = "";
using (StreamReader sr = new StreamReader(resp.GetResponseStream()))
{
pageSource = sr.ReadToEnd();
}
richTextBox1.Text = pageSource;

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

Кроме того, чтобы вы знали, если я использую следующее с классом webbrowser, он работает нормально:

b.Navigate(fullurl, "", enc.GetBytes(postData), "Content-Type: application/x-www-form-urlencoded\r\n");

1 Ответ

0 голосов
/ 07 декабря 2011

Я знаю, что это старый ответ, но пользователь Мэтью Бриндли ответил на аналогичный вопрос с полностью рабочим примером.Речь идет о доступе к исходному коду веб-сайта, который требует входа пользователя ранее.Все сделано из приложения C # с использованием WebRequest и WebResponse

...