Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/25: Рейтинг темы: голосов - 25, средняя оценка - 4.76
52 / 13 / 0
Регистрация: 05.09.2014
Сообщений: 92

Возможно ли узнать форму post запроса?

23.10.2014, 11:52. Показов 5322. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно задать интернет запрос через метод POST. Просмотрел HttpWebRequest и WebClient. Второй оказался гораздо богаче в плане функций и свойств, в частности функции upload----. Первый вопрос: загружать post запрос нужно через одну из этих многочисленных функций, начинающихся на upload, но среди свойств класса обнаружил QueryString, который задает или возвращает коллекцию пар ключ-значение для формы post запроса. Зачем это свойство нужно ? Для хранения данных ? И второй, более важный вопрос: как можно узнать форму post запроса ? То есть существует ли способ получить эту самую вожделенную коллекцию пар ключ-значение прямиком от сервера, с которым я работаю ?

Добавлено через 2 часа 22 минуты
Мой вопрос слишком сложный или он некорректно поставлен ?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.10.2014, 11:52
Ответы с готовыми решениями:

Как узнать данные POST запроса в https
Доброго времени суток форумчане. Нужно изъять данные для формирования post запроса. Не шифрованный запрос "нюхнуть" проблем не...

Как узнать тип входящего запроса: POST или GET
Надо узнать, какой запрос приходит: если GET, то возвратить ошибку. Как узнать тип входящего запроса? Пробовал так, но страничка все...

Узнать возможно ли отобразить форму
Добрый день. Библиотека может быть запущена как приложением запущенным desktop , так и службой. В режиме служб на Winxp форма может...

15
Неадекват
 Аватар для freeba
1501 / 1237 / 248
Регистрация: 02.04.2010
Сообщений: 2,807
23.10.2014, 12:36
Цитата Сообщение от Tini Посмотреть сообщение
Мой вопрос слишком сложный или он некорректно поставлен ?
Скорее несколько специфичен.

1. HttpWebRequest намного более гибкий по сравнению с WebClient, но и несколько более сложный в использовании.
2. Для загрузки значений через WebClient заполняем NameValueCollection и отправляем в качестве параметра:
C#
1
2
3
4
5
6
7
8
using(WebClient client = new WebClient())
{
    System.Collections.Specialized.NameValueCollection reqparm = new System.Collections.Specialized.NameValueCollection();
    reqparm.Add("param1", "1");
    reqparm.Add("param2", "2");
    byte[] responsebytes = client.UploadValues("http://localhost", "POST", reqparm);
    string responsebody = Encoding.UTF8.GetString(responsebytes);
}
3. Для получения и разбора серверных запросов используйте фидлер
2
Заблокирован
23.10.2014, 12:52
Я раньше юзал HttpWebRequest но в виду сложности составления( трудоемкий процесс) загрузки файла нужно было самому составлять multipart-data формат. Я перешел на Viking.Engine классы... Они поддерживают также прокси Socks5 которое недоступно в использовании ВебРеквеста...

Вот пример запроса.

C#
1
2
string data = "domain="+site+"&real=true2.1simpleJKF3";
                        var response = VkRequest.Request("http://www.whois-service.ru/",method:"POST",request:data,FollowRedirects:true);
Отлавливать заппросы можно как через Charles так и через Fiddler (этот лучше)
1
52 / 13 / 0
Регистрация: 05.09.2014
Сообщений: 92
23.10.2014, 13:54  [ТС]
HttpWebRequest более гибок, чем WebClient ? Странно, я просматривал его функции, их значительно меньше, чем у второго. А, если не сложно, то в чем именно проявляется эта гибкость ? И все же мой первый вопрос остался без ответа: зачем нужно свойство QueryString у WebClientа ? Только для хранения коллекций ? Или это свойство как-то используется во время подачи запроса ? Фидлер - это, как я понял, специальная программа ? Нет, вы не поняли. Форму POST я могу посмотреть и через инструменты разработчика гугл хрома. Мой вопрос вполне конкретный. Среди инструментов c.net существуют ли функции, на входе получающие uri, а на выходе - готовую коллекцию пар ключ-значение ? В принципе, можно написать и самому, делов-то. Но я не хочу изобретать велосипед, если его уже кто-то сделал.
0
Неадекват
 Аватар для freeba
1501 / 1237 / 248
Регистрация: 02.04.2010
Сообщений: 2,807
23.10.2014, 14:20
Лучший ответ Сообщение было отмечено Tini как решение

Решение

Цитата Сообщение от Tini Посмотреть сообщение
А, если не сложно, то в чем именно проявляется эта гибкость ?
HttpWebRequest - более низкоуровневый, например если понадобится задать версию http протокола, или рулить кучей хэдеров без него будет намного сложнее. И он на порядок менее тяжелый чем WebClient.
Цитата Сообщение от Tini Посмотреть сообщение
QueryString у WebClientа
Чтобы ручками не формировать Uri. Например:
C#
1
2
3
4
5
6
7
8
using(WebClient client = new WebClient())
{
    System.Collections.Specialized.NameValueCollection reqparm = new System.Collections.Specialized.NameValueCollection();
    reqparm.Add("param1", "1");
    reqparm.Add("param2", "2");
    client.QueryString = reqparm;
    var response = client.DownloadString("http://localhost");
}
Запрос будет сделан по url - http://localhost/?param1=1&param2=2

Цитата Сообщение от Tini Посмотреть сообщение
существуют ли функции, на входе получающие uri, а на выходе - готовую коллекцию пар ключ-значение
Да, существует класс FormDataCollection.
1
52 / 13 / 0
Регистрация: 05.09.2014
Сообщений: 92
23.10.2014, 16:11  [ТС]
1) Понятно, благодарю за объяснение.
2) То есть QueryString для get запроса нужен, верно ?
3) О, да. Проверил, точно. То, что я искал. Одна из перегрузок конструктора объекта предусматривает uri в качестве параметра, а сам объект и есть коллекция пар ключ-значение, значит он должен выдавать форму. Спасибо, именно об этом я и говорил.
0
Неадекват
 Аватар для freeba
1501 / 1237 / 248
Регистрация: 02.04.2010
Сообщений: 2,807
23.10.2014, 16:26
Цитата Сообщение от Tini Посмотреть сообщение
То есть QueryString для get запроса нужен, верно ?
не обязательно, может быть и POST и PUT и любой другой. Просто с параметрами удобнее работать не когда они в одной строке, а когда представлены парами {ключ:значение}.
1
52 / 13 / 0
Регистрация: 05.09.2014
Сообщений: 92
24.10.2014, 02:23  [ТС]
Цитата Сообщение от freeba Посмотреть сообщение
Просто с параметрами удобнее работать не когда они в одной строке, а когда представлены парами {ключ:значение}.
С этим я согласен, но ведь среди функций WebClientа есть System.Net.WebClient.UploadValues(string , System.Collections.Specialized.NameValue Collection). Первый параметр uri, второй, как сами видите, коллекция пар. Получается, что ваш вариант
Цитата Сообщение от freeba Посмотреть сообщение
C#
1
2
3
4
5
6
7
8
using(WebClient client = new WebClient())
{
   System.Collections.Specialized.NameValueCollection reqparm = new System.Collections.Specialized.NameValueCollection();
   reqparm.Add("param1", "1");
   reqparm.Add("param2", "2");
   client.QueryString = reqparm;
   var response = client.DownloadString("http://localhost");
}
и этот
C#
1
2
3
4
5
6
using(WebClient client = new WebClient())
{
   System.Collections.Specialized.NameValueCollection reqparm = new System.Collections.Specialized.NameValueCollection();
   reqparm.Add("param1", "1");
   reqparm.Add("param2", "2");
    var response=client.UploadValues("http://localhost", reqparm);
делают одно и то же ? Или я неправильно понял, что делает UploadValues ?
0
Неадекват
 Аватар для freeba
1501 / 1237 / 248
Регистрация: 02.04.2010
Сообщений: 2,807
24.10.2014, 10:22
Цитата Сообщение от Tini Посмотреть сообщение
Или я неправильно понял, что делает UploadValues ?
неправильно.

В первом случае будет запрос на http://localhost/?param1=1&param2=2 с пустым телом запроса.
А во втором запрос будет на http://localhost с телом POST(PUT)-запроса param1=1&param2=2
1
52 / 13 / 0
Регистрация: 05.09.2014
Сообщений: 92
24.10.2014, 13:57  [ТС]
Почему-то не получается получить коллекцию с сайта.
C#
1
2
3
4
5
6
7
8
static public string запрос(string стр)
    {
        Uri адресури = new Uri(стр);
        form.FormDataCollection форма = new form.FormDataCollection(адресури);
 
 
        return форма.ToString();
    }
Ответ приходит слишком быстро, подозреваю, что даже запрос в интернет не отправляется. Я думал, что создание экземпляра класса FormDataCollection, автоматически отправляет интернет запрос и получает шаблон формы.
0
Неадекват
 Аватар для freeba
1501 / 1237 / 248
Регистрация: 02.04.2010
Сообщений: 2,807
24.10.2014, 18:09
Цитата Сообщение от Tini Посмотреть сообщение
Я думал, что создание экземпляра класса FormDataCollection, автоматически отправляет интернет запрос и получает шаблон формы.
Тяжелый случай. Может расскажите цепочку логических размышлений которая вас привела к такому выводу?
1
52 / 13 / 0
Регистрация: 05.09.2014
Сообщений: 92
25.10.2014, 07:36  [ТС]
Цитата Сообщение от freeba Посмотреть сообщение
Тяжелый случай. Может расскажите цепочку логических размышлений которая вас привела к такому выводу?
Не то, чтобы цепочка рассуждений. Я просмотрел функции класса FormDataCollection. Они либо для работы с содержимым коллекции, либо конструкторы, которые содержат uri адреса в качестве параметра. Если FormDataCollection позволяет получать шаблон формы, то это возможно только через конструкторы. Я использовал ранее классы HttpWebRequest и знаю как получать html код страницы через них, поэтому понимаю, что опираясь на логику их работы, мое предположение выглядит бредово, но я не вижу среди функций FormDataCollection ничего похожего. Или все же FormDataCollection не делает того, о чем я говорю ?
Я опирался на ваш ответ на мой вопрос:
Цитата Сообщение от freeba Посмотреть сообщение
Сообщение от Tini
существуют ли функции, на входе получающие uri, а на выходе - готовую коллекцию пар ключ-значение
Да, существует класс FormDataCollection.
__________________
Я неправильно понял ? Или нужно объект FormDataCollection запихнуть еще куда-то, чтобы сделать этот самый запрос для шаблоны формы ? Если да, то подскажите куда.

Добавлено через 10 минут
Честно пытался разобраться сам, но не получилось, поэтому и прошу помочь.
0
Неадекват
 Аватар для freeba
1501 / 1237 / 248
Регистрация: 02.04.2010
Сообщений: 2,807
25.10.2014, 12:54
Еще один наводящий вопрос: что такое шаблон формы?
1
52 / 13 / 0
Регистрация: 05.09.2014
Сообщений: 92
25.10.2014, 13:39  [ТС]
Цитата Сообщение от freeba Посмотреть сообщение
Еще один наводящий вопрос: что такое шаблон формы?
Согласен, этот вопрос ставит в тупик. Сначала я думал, что это та же коллекция из пар ключ-значение, где на месте значения стоит null или что-то подобное. То есть значения нужно вставлять самому. Но после вашего вопроса понял, что раз для каждого ключа существует свой набор допустимых значений, значит персонально для ключа должен быть создан массив со значениями в качестве элементов, но это довольно сложная структура получилась бы. Я слишком все усложняю, да ? Тогда задам конкретный вопрос FormDataCollection - это просто коллекция для отправки веб запроса ? Если да, то почему нельзя использовать тот же NameValueCollection для этих целей ? И зачем, тогда, нужно вводить uri в качестве аргумента при создании объекта ?
0
Неадекват
 Аватар для freeba
1501 / 1237 / 248
Регистрация: 02.04.2010
Сообщений: 2,807
25.10.2014, 14:17
Цитата Сообщение от Tini Посмотреть сообщение
FormDataCollection - это просто коллекция для отправки веб запроса ?
Это специальная коллекция - она используется в основном в asp.net приложениях, например разработать REST-апи без нее практически нереально, т.к. именно в ней представляются все данные присланные клиентом. Также ее очень удобно использовать для парсинга параметров из url - скормили его конструктору, получили набор пар ключ:значение.

В общем для отправки запросов существует webClient и webRequest. FormDataCollection - это коллекция для работы с данными, никакие запросы никуда она не шлет.
1
52 / 13 / 0
Регистрация: 05.09.2014
Сообщений: 92
25.10.2014, 16:05  [ТС]
Цитата Сообщение от freeba Посмотреть сообщение
Также ее очень удобно использовать для парсинга параметров из url - скормили его конструктору, получили набор пар ключ:значение.
Аааа, так вот что он делает. То есть если в url содержатся данные, то он просто выводит их оттуда в создаваемый объект и все? Немного разочарован. Понял. Похоже, что коллекцию придется писать вручную. Спасибо большое за время и терпение.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.10.2014, 16:05
Помогаю со студенческими работами здесь

Возможно ли средствами VBA узнать условия фильтра таблицы/запроса?
Добрый день! Кто-нибудь знает, возможно ли средствами VBA определить, по каким полям и какими условиями отфильтрована открытая таблица...

Тело POST запроса. Как самому узнать, что там должно быть?
Всем здрасти! У меня следующая делема... Нагуглил POST запрос на авторизацию на одноклассниках. Тело POST запроса имеет следующий...

Возможно ли перехватить POST
Здравствуйте! Хотел спросить, вот в массиве GET пароль передавать возможно, но не следует, потому что все элементы массива GET видно в...

2 post запроса
подскажите пожалуйста как можно выполнить 2 post запроса: 1 для авторизации, а затем еще один, правда на другой странице?

Post запроса
Добрый день. Столкнулся с проблемой при post запросе. Есть такой код, который должен делать запрос: string url =...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru