HttpWebRequest, авторизация на сайте: Нужно ли прописывать Headers, UserAgent в каждом запросе - C#
Формулировка задачи:
Всем привет!
Пытаюсь пройти авторизацию на сайте http://ru.grepolis.com
Для этого нужно отправить несколько Get и Post запросов, возникло несколько вопросов:
1. При отправке запросов я формирую заголовки (Headers), UserAgent и т.д. Вопрос: мне нужно подставлять эти значения в в каждый запрос или как-нибудь можно это сделать удобнее?
2. Мне нужно отправить Post запрос с данными в Json формате.
Как это сделать? Гуглил, но не смог разобраться в примерах, как-то везде все по разному.
Вот что имею на данный момент:
HttpWebRequest request; try { //Первый Get запрос request = (HttpWebRequest)HttpWebRequest.Create("http://ru.grepolis.com"); request.UserAgent = "Mozila/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MyIE2;"; request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; request.Headers.Add("Accept-Language", "ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3"); //Post запрос request = (HttpWebRequest)HttpWebRequest.Create("http://ru.grepolis.com/start/index?action=login_from_start_page"); request.Method = "POST"; request.referer='http://ru.grepolis.com' request.UserAgent = "Mozila/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MyIE2;"; request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; request.Headers.Add("Accept-Language", "ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3"); request.ContentType = "application/x-www-form-urlencoded"; request.AllowAutoRedirect = true; // Формируем строку с параметрами //Вот тут ВОПРОС: ??????????????? // передаем параметры byte[] EncodedPostParams = Encoding.ASCII.GetBytes(secondStepForm); request.ContentLength = EncodedPostParams.Length; // Записываем данные в поток request.GetRequestStream().Write(EncodedPostParams, 0, EncodedPostParams.Length); request.GetRequestStream().Close(); // делаем запрос request myHttpWebResponse = (HttpWebResponse)request.GetResponse(); } catch (Exception) { MessageBox.Show("Не могу загрузить файл"); return; } StringBuilder pagebuilder = new StringBuilder(); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); StreamReader reader = new StreamReader(response.GetResponseStream()); string line; while ((line = reader.ReadLine()) != null) pagebuilder.AppendLine(line); response.Close(); reader.Close(); pageRichTextBox.Text = pagebuilder.ToString();
Решение задачи: «HttpWebRequest, авторизация на сайте: Нужно ли прописывать Headers, UserAgent в каждом запросе»
textual
Листинг программы
private void BugFix_CookieDomain(CookieContainer cookies) { Type containerType = typeof (CookieContainer); var table = (Hashtable) containerType.InvokeMember("m_domainTable", BindingFlags.NonPublic | BindingFlags.GetField | BindingFlags.Instance, null, cookies, new object[] {}); var keys = new ArrayList(table.Keys); foreach (string keyObj in keys) { string key = (keyObj); if (key[0] == '.') { string newKey = key.Remove(0, 1); table[newKey] = table[keyObj]; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д