Как я могу загрузить веб-сайт в Webrowser из cookieContainer HttpWebrequest
Я пытаюсь войти на сайт через Httprequest и отвечаю на некоторую информацию. И я сохраняю ответ Cookie. Так как я могу узнать, что я успешно вошел в систему, я пытаюсь загрузить веб-сайт новой формой с помощью cookie, но это не вход в систему. Не могли бы вы помочь мне... Это мой код:
Код для входа в систему:
HttpWebRequest getRequest = (HttpWebRequest)WebRequest.Create(new Uri("https://www.nike.com/profile/login?Content-Locale=en_US"));
getRequest.CookieContainer = new CookieContainer();
getRequest.CookieContainer.Add(myLoginCookies);
getRequest.Method = WebRequestMethods.Http.Post;
getRequest.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
getRequest.UserAgent = userAgent;
getRequest.Referer = "http://www.nike.com/";
getRequest.Accept = "application/json, text/javascript, */*; q=0.01";
getRequest.KeepAlive = true;
string postData = "login=" + username + "&rememberMe=false&password=" + password;
try
{
using (StreamWriter writer = new StreamWriter(getRequest.GetRequestStream()))
writer.Write(postData.ToString());
HttpWebResponse getResponse = (HttpWebResponse)getRequest.GetResponse();
using (StreamReader reader = new StreamReader(getResponse.GetResponseStream()))
returnData = reader.ReadToEnd();
//MessageBox.Show(returnData);
myLoginCookies.Add(getResponse.Cookies);
if (myLoginCookies.Count > 1)
{
return new NikeStore(myLoginCookies, returnData);
}
else
{
MessageBox.Show("login failed");
return null;
}
}
catch (WebException ex)
{
MessageBox.Show(ex.Message);
return null;
}
И этот код для загрузки сайта при возврате cookie
public Form_OpenCart(CookieCollection oCookie, string url_page)
{
InitializeComponent();
foreach (Cookie cook in oCookie)
{
cookie.Add(cook);
}
url = url_page;
}
private void Form_OpenCart_Load(object sender, EventArgs e)
{
url = "http://store.nike.com/us/en_us/";
if (cookie != null)
{
foreach (Cookie cook in cookie)
{
cookie_string += cook.ToString() + ";";
InternetSetCookie(url, cook.Name, cook.Value);
}
webBrowser1.Navigate(url);
}
else
{
MessageBox.Show("huhuhu");
}
Пожалуйста, помогите мне. Я очень стараюсь, но не могу добиться успеха.
1 ответ
Я сталкивался с такими проблемами много раз при использовании HttpWebRequest для URL-адреса HTTPS. Поэтому я перешел на Curl Lib C#. И это работает каждый раз.
Дайте мне знать, вам нужен пример кода. Скорее всего, при использовании HttpWebRequest отсутствуют некоторые файлы cookie, которые необходимы для продолжения сеанса, поэтому попробуйте использовать CurlLib и используйте их.
Используйте это: https://www.dropbox.com/s/0l2rkczij11m0t4/InfoSharing.rar?dl=0
Добавьте все Dll в вашу папку Debug, и в проекте просто добавьте ссылку LibCurlNet.dll
И используйте класс, который я послал. Просто используйте это, чтобы получить HTML. Используйте пост как пустой, если вы хотите использовать HttpWebRequest (Get).
HTTP http = new HTTP();
http.setCookie("Cookies\\" + UserName + ".txt");
string Url = "";
string Post = "";
string r = "";
//Get info
Url = "https://www.example.com/reg/join?trk=hb_join";
r = http.Post(Url, Post, "","");