Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
18 / 23 / 18
Регистрация: 13.05.2016
Сообщений: 227

Post запрос с предварительным парсингом

21.05.2016, 21:11. Показов 4034. Ответов 45
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
        private void post()
        {          
            string Parameters = "_csrf=" + connetn + "";
            Parameters += "&SignupForm[track_id]=";
            Parameters += "&SignupForm[su_type]=webmaster";
            Parameters += "&SignupForm[anonymously]=1";
            Parameters += "&SignupForm[username]=748596213";
            Parameters += "&SignupForm[email]=5896@ya.ru";
            Parameters += "&SignupForm[password]=41526300";
            Parameters += "&SignupForm[repeatpassword]=41526300";
            Parameters += "&track_id=0";
            WebRequest req = WebRequest.Create(html);
            req.ContentType = "application/x-www-form-urlencoded";
            req.Method = "POST";
            byte[] bytes = Encoding.ASCII.GetBytes(html);
            req.ContentLength = bytes.Length;
            Stream os = req.GetRequestStream();
            os.Write(bytes, 0, bytes.Length);
            os.Close();
            WebResponse resp = req.GetResponse();
            if (resp == null)
            {
                MessageBox.Show("Что то ответ пустой");
                return;
            }
            else
            {
                StreamReader sr = new StreamReader(resp.GetResponseStream());
                textBox.Text = (sr.ReadToEnd().Trim());
            }
        }
        private void pars()
        {
            HtmlDocument HD = new HtmlDocument();
            var web = new HtmlWeb();
            HD = web.Load(html);
            HtmlNodeCollection NoAltElements = HD.DocumentNode.SelectNodes("/html/head/meta[16]");
            if (NoAltElements != null)
            {
                foreach (HtmlNode HN in NoAltElements)
                {
                    connetn = HN.Attributes["content"].Value;
                    post();
                }
            }
            else
            {
                label1.Content = "1";
            }
        }
 
        private void button_Click(object sender, RoutedEventArgs e)
        {
            pars();           
        }
Ошибка при запросе. В строке WebResponse resp = req.GetResponse();
Удаленный сервер возвратил ошибку: (400) Недопустимый запрос.
Но я так подозреваю, что он 2 раза открывается страницу и парсин становится без полезный.
1 раз, спарсил, и 2 раз при отправке.

Это я так думаю.Может не прав.

Подскажите как исправить это.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.05.2016, 21:11
Ответы с готовыми решениями:

Послать POST запрос запрос с двумя и более параметрами?
Делаю так: string ProxyString = ""; string URI = @"http://www.easyprog.ru/test.php";; string...

Get запрос + куки + Post запрос
Добрый день. Подскажите как решить следующую ситуацию: 1. Нужно отправить get запрос. 2. В полученных заголовках взять куки. 3....

Запрос POST
Здравствуйте! Пытаюсь написать запрос POST, который отправляет символьную строку. Как можно проверить результат работы? Нужно использовать...

45
18 / 23 / 18
Регистрация: 13.05.2016
Сообщений: 227
22.05.2016, 20:29  [ТС]
Студворк — интернет-сервис помощи студентам
IamRain, EvilFromHell,
Про
cookieContainer = handler.CookieContainer;
Так понимаю это загрузка в куки, только это загрузку при уже отправке. А мне надо начало загрузку потом выгрузку.

По картинкам видно, что начало куки создались и потом при запросе они добавились. Вот у меня вопрос как так сделать.
Начало я парсил, создались куки. Потом отправил запрос и они загрузились вместе с запросом.
Миниатюры
Post запрос с предварительным парсингом   Post запрос с предварительным парсингом  
0
18 / 23 / 18
Регистрация: 13.05.2016
Сообщений: 227
22.05.2016, 20:31  [ТС]
Цитата Сообщение от EvilFromHell Посмотреть сообщение
IamRain, не, тут все верно:
C#
1
2
3
var handler = new HttpClientHandler() {
CookieContainer = new CookieContainer(),
 AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate }
Контейнер тут присваивается handlerу, а из него уже, в свою очередь, создается HttpClient:
C#
1
Client = new HttpClient(handler) ;
Соответственно, контейнер таки присваивается клиенту.
Но первый запрос при этом шлется каким-то левым образом без всяких куков:

C#
1
2
3
4
HtmlDocument HD = new HtmlDocument();
 var web = new HtmlWeb();
HD = web.Load("https://runcpa.com/");
 HtmlNodeCollection NoAltElements = HD.DocumentNode.SelectNodes("/html/head/meta[16]");
Уже сам понимаю 1 запрос левый который, но он рабочий, а как его изменить я хз.
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
22.05.2016, 20:40
4cfg, в чем проблема с первым запросом?
C#
1
var result  = Сlient.GetStringAsync(new Uri("сайт")).Result
Получаете строку, дальше парсите ее как угодно.
0
18 / 23 / 18
Регистрация: 13.05.2016
Сообщений: 227
22.05.2016, 20:43  [ТС]
Цитата Сообщение от EvilFromHell Посмотреть сообщение
4cfg, в чем проблема с первым запросом?
C#Выделить код
1
var result *= Сlient.GetStringAsync(new Uri("сайт")).Result
Получаете строку, дальше парсите ее как угодно.
Вы чуть путаете. Первый запрос это
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
            HtmlDocument HD = new HtmlDocument();
            var web = new HtmlWeb();
            HD.Load("https://runcpa.com/");
            HtmlNodeCollection NoAltElements = HD.DocumentNode.SelectNodes("/html/head/meta[16]");
            if (NoAltElements != null)
            {
                foreach (HtmlNode HN in NoAltElements)
                {
                    connetn = HN.Attributes["content"].Value;
                    textBox1.Text = connetn;
                }
            }
            else
            {
                MessageBox.Show("123");
            }
Тут я вытаскиваю код который мне надо, но сейчас надо сюда вставить код который будет создавать куки. Только потом переходить к запросу.
0
 Аватар для IamRain
4695 / 2702 / 735
Регистрация: 02.08.2011
Сообщений: 7,236
22.05.2016, 20:52
Цитата Сообщение от 4cfg Посмотреть сообщение
Вы чуть путаете. Первый запрос это
У HtmlDocument есть свойство Cookie.
0
18 / 23 / 18
Регистрация: 13.05.2016
Сообщений: 227
22.05.2016, 20:59  [ТС]
Цитата Сообщение от IamRain Посмотреть сообщение
У HtmlDocument есть свойство Cookie.
Сообщение от 4cfg
Вы чуть путаете. Первый запрос это
У HtmlDocument есть свойство Cookie.
Если брать HtmlDocument.Cookie то такого нету.
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
22.05.2016, 20:59
4cfg, что "код, который будет создавать куки"? С почему вы так уверены, что нужные куки должны генерироваться вручную? Вы это проверили в сниффере?
0
18 / 23 / 18
Регистрация: 13.05.2016
Сообщений: 227
22.05.2016, 21:06  [ТС]
Цитата Сообщение от EvilFromHell Посмотреть сообщение
4cfg, что "код, который будет создавать куки"? С почему вы так уверены, что нужные куки должны генерироваться вручную? Вы это проверили в сниффере?
Они автоматически должны формироваться. Из 1 парсинга. И потом при запросе вставлять.
Я так проверил. Брал свой запрос который с ошибкой, и добавлял куки которые с успешного. И мой запрос был успешный

Добавлено через 4 минуты
При парсинге создается куки автоматически с данными (рандомные, а не статические)
Set-Cookie: PHPSESSID=kfpgq5ugurf3oegeffh68cif26;_cs rf=41cce1685c2b4b5dab7e3f761135911f79155 c4f122c
e38965ef2d02d4e5da56a%3A2%3A%7Bi%3A0%3Bs %3A5%3A%22_csrf%22%3Bi%3A1%3Bs%3A32%3A%2 23oPag_i72yujnnyxvV1P9eEDggdazHQF%22%3B% 7D
Они сами создаются при парсинге.
И при запросе они вставляются
Cookie: PHPSESSID=kfpgq5ugurf3oegeffh68cif26;_cs rf=41cce1685c2b4b5dab7e3f761135911f79155 c4f122ce38965ef2
d02d4e5da56a%3A2%3A%7Bi%3A0%3Bs%3A5%3A%2 2_csrf%22%3Bi%3A1%3Bs%3A32%3A%223oPag_i7 2yujnnyxvV1P9eEDggdazHQF%22%3B%7D
В итоге тоге все хорошо.
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
22.05.2016, 21:22
4cfg, что такое по-вашему "парсинг"? Конкретно в данном случае парсинг куков, в общепринятом понимании этого слова, по идее должен выполняться автоматически в недрах класса HttpClient и класса CookieContainer, а вам об этом задумываться не надо вообще. А о чем вы говорите - я с трудом понимаю. Как я уже сказал-шлите оба(сначала тот, в ответ на который выдаются куки, а потом POST запрос который у вас в коде выше) запроса c одним CookieContaineroм. Через один и тот же HttpClient.
0
18 / 23 / 18
Регистрация: 13.05.2016
Сообщений: 227
22.05.2016, 21:30  [ТС]
Цитата Сообщение от EvilFromHell Посмотреть сообщение
4cfg, что такое по-вашему "парсинг"? Конкретно в данном случае парсинг куков, в общепринятом понимании этого слова, по идее должен выполняться автоматически в недрах класса HttpClient и класса CookieContainer, а вам об этом задумываться не надо вообще. А о чем вы говорите - я с трудом понимаю. Как я уже сказал-шлите оба(сначала тот, в ответ на который выдаются куки, а потом POST запрос который у вас в коде выше) запроса c одним CookieContaineroм. Через один и тот же HttpClient.
Парсин - вытащить определенное значение.

При запросе пост, куков нету, вот в чем дело. И в тоге запрос идет без них, и от сюда ошибка.
Ниже проект.

Я даже у же не знаю как объяснить, уже и картинки скидывал и так пытался объяснить.
Может и в HttpClient они создаются автоматически, но в парсинге моем нет.

И вообще парсин у меня htmlagilitypac, так что у меня работет получается 2 разных компонента.
Вложения
Тип файла: rar 123.rar (2.48 Мб, 1 просмотров)
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
22.05.2016, 21:31
4cfg, ну я по этому поводу четко сказал что делать:
Как я уже сказал-шлите оба(сначала тот, в ответ на который выдаются куки, а потом POST запрос который у вас в коде выше) запроса c одним CookieContaineroм. Через один и тот же HttpClient.
0
18 / 23 / 18
Регистрация: 13.05.2016
Сообщений: 227
22.05.2016, 21:33  [ТС]
Цитата Сообщение от EvilFromHell Посмотреть сообщение
4cfg, ну я по этому поводу четко сказал что делать:
Как я уже сказал-шлите оба(сначала тот, в ответ на который выдаются куки, а потом POST запрос который у вас в коде выше) запроса c одним CookieContaineroм. Через один и тот же HttpClient.
Дело в том, что я теперь не понимаю, что надо сделать.
И что надо написать и куда это все вставить.
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
22.05.2016, 21:56
4cfg, тогда я пас пример я выше привел, что делать-сказал, как понятнее написать-не знаю. Запрос, повторю, шлется и загружается в HtmlDocument как-то так:
C#
1
HD.LoadHtml(Сlient.GetStringAsync(new Uri("сайт")).Result);
0
18 / 23 / 18
Регистрация: 13.05.2016
Сообщений: 227
22.05.2016, 21:58  [ТС]
Цитата Сообщение от EvilFromHell Посмотреть сообщение
4cfg, тогда я пас пример я выше привел, что делать-сказал, как понятнее написать-не знаю. Запрос, повторю, шлется как-то так:
C#Выделить код
1
HD.LoadHtml(Сlient.GetStringAsync(new Uri("сайт")).Result);
Код я понимаю, я не понимаю куда его вставлять просто.
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
22.05.2016, 22:01
4cfg, вместо вот этого:
C#
1
2
var web = new HtmlWeb();
HD = web.Load("https://runcpa.com/");
Только клиент надо объявить так, чтобы он был виден в этом месте.
0
18 / 23 / 18
Регистрация: 13.05.2016
Сообщений: 227
22.05.2016, 22:10  [ТС]
Цитата Сообщение от EvilFromHell Посмотреть сообщение
вместо вот этого:
C#
1
2
var web = new HtmlWeb();
HD = web.Load("https://runcpa.com/");
Только клиент надо объявить так, чтобы он был виден в этом месте.
Ссылка на объект не указывает на экземпляр объекта. Ошибка
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
HtmlDocument HD = new HtmlDocument();
           // var web = new HtmlWeb();
           // HD.Load("https://runcpa.com/");           
            HD.LoadHtml(Client.GetStringAsync(new Uri("https://runcpa.com/")).Result);
            HtmlNodeCollection NoAltElements = HD.DocumentNode.SelectNodes("/html/head/meta[16]");
            if (NoAltElements != null)
            {
                foreach (HtmlNode HN in NoAltElements)
                {
                    connetn = HN.Attributes["content"].Value;
                    textBox1.Text = connetn;
                }
            }
            else
            {
                MessageBox.Show("123");
            }
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
22.05.2016, 22:16
Ну клиент-то вы похоже так и не создали...
0
18 / 23 / 18
Регистрация: 13.05.2016
Сообщений: 227
22.05.2016, 22:20  [ТС]
Цитата Сообщение от EvilFromHell Посмотреть сообщение
Ну клиент-то вы похоже так и не создали...
private HttpClient Client;
Создал
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
22.05.2016, 22:22
4cfg, где тут создание? Тут объявлена пустая ссылка на HttpClient, то бишь null.
0
18 / 23 / 18
Регистрация: 13.05.2016
Сообщений: 227
22.05.2016, 22:27  [ТС]
Цитата Сообщение от EvilFromHell Посмотреть сообщение
4cfg, где тут создание? Тут объявлена пустая ссылка на HttpClient, то бишь null.
Создал.
Но что то не, что не изменилось.

Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
        private static HttpClient Client;
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            
            {
                var handler = new HttpClientHandler() {
                    CookieContainer = new CookieContainer(),
                    AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate };
                Client = new HttpClient(handler) ;
                cookieContainer = handler.CookieContainer;
                Client.DefaultRequestHeaders.TryAddWithoutValidation("Cache-Control", "no-cache");
                Client.DefaultRequestHeaders.TryAddWithoutValidation("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
                Client.DefaultRequestHeaders.TryAddWithoutValidation("Accept-Encoding", "gzip, deflate, br");
                Client.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", "Mozilla / 5.0(Windows NT 10.0; WOW64) AppleWebKit / 537.36(KHTML, like Gecko) Chrome / 50.0.2661.102 Safari / 537.36");
                Client.DefaultRequestHeaders.TryAddWithoutValidation("Accept-Language", "ru-RU, ru; q=0.8,en-US; q=0.6,en; q=0.4");
                var content = new FormUrlEncodedContent(new[]
                {
                new KeyValuePair<string, string>("_csrf", ""+connetn),
                new KeyValuePair<string, string>("SignupForm[track_id]", ""),
                new KeyValuePair<string, string>("SignupForm[su_type]", "partner"),
                new KeyValuePair<string, string>("SignupForm[anonymously]", "0"),
                new KeyValuePair<string, string>("SignupForm[username]", "login8546"),
                new KeyValuePair<string, string>("SignupForm[email]", "login@ya.ru"),
                new KeyValuePair<string, string>("SignupForm[password]", "login12"),
                new KeyValuePair<string, string>("SignupForm[repeatpassword]", "login12"),
                new KeyValuePair<string, string>("track_id", "0"),
                });
                var result = Client.PostAsync("https://runcpa.com/", content).Result;
                string resultContent = result.Content.ReadAsStringAsync().Result;               
                textBox.Text = resultContent;            
            }
        }
        public static string connetn;
        public static CookieContainer cookieContainer = new CookieContainer();
 
        private void button2_Click(object sender, RoutedEventArgs e)
        {
            HtmlDocument HD = new HtmlDocument();
            Client = new HttpClient();
            HD.LoadHtml(Client.GetStringAsync(new Uri("https://runcpa.com/")).Result);
            HtmlNodeCollection NoAltElements = HD.DocumentNode.SelectNodes("/html/head/meta[16]");
            if (NoAltElements != null)
            {
                foreach (HtmlNode HN in NoAltElements)
                {
                    connetn = HN.Attributes["content"].Value;
                    textBox1.Text = connetn;
                }
            }
            else
            {
                MessageBox.Show("123");
            }
        }


Все также при пост запросе нету куков
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.05.2016, 22:27

Post запрос
Собственно, написал программу для парса данных с сайта конкурента, но не могу создать POST запрос для отправки на мой. Можете как то...

POST запрос
Вообщем надо отправить пост запрос с текстом... Но почему то выдает ошибку что не так? using System; using...

Post запрос
Здравствуйте Мне нужно реализовать запрос в C# с параметрами Пример кода &lt;form method=&quot;post&quot;...

Post запрос donationalerts
Пытаюсь послать POST запрос на donationalerts, который отправляет все данные о &quot;данате&quot;, обратно присылают ответ с семизначным...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru