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];
                }
            }
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.5 из 5