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

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

21.05.2016, 21:11. Показов 3837. Ответов 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
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
22.05.2016, 22:31
Студворк — интернет-сервис помощи студентам
4cfg, ну тогда либо создали неправильно(как создавать handler вы уже знаете, в одном из постов выше было правильно), либо куки выдаются в ответ на какой-то другой запрос. А вы не посмотрели на какой. Ответ виден в сниффере.
0
18 / 23 / 18
Регистрация: 13.05.2016
Сообщений: 227
22.05.2016, 22:37  [ТС]
Цитата Сообщение от EvilFromHell Посмотреть сообщение
4cfg, ну тогда либо создали неправильно(как создавать handler вы уже знаете, в одном из постов выше было правильно), либо куки выдаются в ответ на какой-то другой запрос. А вы не посмотрели на какой. Ответ виден в сниффере.
Куки выдаются при 1 загрузке страницуе, а именно
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
            HtmlDocument HD = new HtmlDocument();
            var handler = new HttpClientHandler()
            {
                CookieContainer = new CookieContainer(),
                AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate
            };
            Client = new HttpClient(handler);
            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");
            }
А потом они должны грузиться
Вот сюда
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
{
                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;            
            }
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
22.05.2016, 22:38
4cfg, с каких бы делов им туда грузиться, если клиент вы пересоздаете?
0
18 / 23 / 18
Регистрация: 13.05.2016
Сообщений: 227
22.05.2016, 22:54  [ТС]
Что-же, поиграли в экстрасенса, пойду напьюсь от счастья.
Проблема была в том, что 2 раза создавались заново HttpClient и в итоге они не работали. Когда объединил то все стало на место.
Кликните здесь для просмотра всего текста
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
 HtmlDocument HD = new HtmlDocument();
            var handler = new HttpClientHandler()
            {
                CookieContainer = new CookieContainer(),
                AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate
            };
            Client = new HttpClient(handler);
            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");
            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;
                    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]", "c1f2wer"),
                        new KeyValuePair<string, string>("SignupForm[email]", "c1f2wer@yandex.ru"),
                        new KeyValuePair<string, string>("SignupForm[password]", "74859612300"),
                        new KeyValuePair<string, string>("SignupForm[repeatpassword]", "74859612300"),
                        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;
                }
            }
            else
            {
                MessageBox.Show("Ошибка");
            }


Огромное спасибо EvilFromHell, что помог, если не ты не знал, что бы делать.

Еще 1 вопрос, как останавливать такой поток? Просто, после того как уйдет запрос он видимо не закрывается и постоянно шлет данные.
Если программу не закрыть вот такие запросы идут постоянно, и до бесконечности.
Миниатюры
Post запрос с предварительным парсингом  
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
22.05.2016, 22:56
4cfg, эти запросы не имеют никакого отношения непосредственно к вашей программе. Это особенности работы 15ой студии. Просто поставьте фильтр, чтобы их не видеть.
0
18 / 23 / 18
Регистрация: 13.05.2016
Сообщений: 227
22.05.2016, 23:11  [ТС]
EvilFromHell, ещё раз спасибо огромное не знаю, что бы без вас делал.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.05.2016, 23:11
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
46
Ответ Создать тему
Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru