Как делать HTTP/HTTPS POST или GET запросы в программе (базовая информация)
В ответ на GET или POST запрос сервер может вернуть контент (когда вы открываете сайт в браузере, происходят GET/POST запросы для получения контента от сервера/сайта).
Примечание: Если в ссылке присутствует символ #, то все, что стоит после него, не будет учитываться при выполнении POST или GET запроса. Информация в URL, что стоит после символа решетки учитывается только WEB браузером.
При формировании POST запроса нужно правильно оформить POST Данные. Смотрите оформление POST данных для библиотеки Clever Internet Suite (CIS) .
По умолчанию в инструментах программы используются GET запросы.
Для парсинга документов с использованием POST запросов во вкладке “Контент” или “Ссылки” пользуйтесь таким методом:
Как парсить во вкладке «Контент» или «Ссылки» с использованием POST-запросов
Для создания дополнительных GET или POST запросов из шаблона вывода при парсинге во вкладке “Контент” (с целью подгрузки дополнительных данных или отправки данных) используйте макросы:
GETMORECONTENT
PHP_SCRIPT
Для того, чтобы узнать нужную информацию о GET или POST запросах пользуйтесь инструментом браузера Firefox под названием “Монитор сети” (shift+ctrl+e в Firefox). Это нужно, когда вы парсите сайты, где данные подгружаются скриптами WEB страницы.
Запросы в мониторе сети Firefox будут появляться в режиме реального времени в виде списка (например, когда вы загрузили WEB-страницу или кликнули по какой-либо кнопке WEB страницы для подгрузки данных, например: “узнать цену” или “отправить комментарий”.
После того, как вы узнали данные о запросе (URL, POST data, HTTP Headers) вы можете воссоздать нужные запросы в Content Downloader с помощью нужных инструментов:
Как парсить во вкладке «Контент» или «Ссылки» с использованием POST-запросов
– Заголовки запроса (custom headers) и POST данные устанавливаются в окне настроек HTTP запросов программы (ctrl+h)
Для выполнения большинства GET запросов достаточно знать и указать его URL. Если запросы не выполняются, установите и заголовки запроса.
Для выполнения большинства POST запросов достаточно знать и указать URL и POST данные. Если запросы не выполняются, установите и заголовки запроса.
Возможные нюансы
Если ответ на запрос пришел в виде GZIP и автоматически не распаковался
То уберите строку с gzip из custom headers
Accept-Encoding: gzip, deflate, br
Accept-Encoding: gzip, deflate, br
При выполнении POST запроса обратите внимание на параметр “применять percent-encoding для отправляемых POST данных”
Если вы вставляете POST данные в percent-encoding (%2A…), то этот параметр нужно отключить.
(оценок: 3, средний балл: 3.67)
POST-запрос
POST-запрос по своей структуре сложнее GET-запроса : он имеет заголовок и тело. Передать POST-запрос через адресную строку браузера нельзя, требуется специализированный механизм отправки запросов.
POST-запрос может быть предпочтительнее при необходимости отправить в бизнес-процесс большое количество параметров. При помощи POST-запроса их можно передать неограниченное количество. Максимальное количество параметров, которое можно передавать GET-запросом, ограничено максимальной длиной заголовка запроса – от двух тысяч символов в зависимости от используемых веб-сервера и веб-клиента. В большинстве случаев этого более чем достаточно, но если требуется, например, передать в переменную некоторый текст, этого лимита может не хватить.
Кроме того, HTTP-POST запросы не имеют ограничений на тип передаваемых параметров. Возможность использования POST-запросов будет полезна при интеграции системы ELMA с простыми веб-приложениями в случае, если требуется передавать в систему ELMA большой объем данных или файлы.
Простейший способ отправить POST-запрос — использовать HTML форму, для которой указан метод передачи данных «post».
ID Партнера:
Отправка данной формы приведет к запуску бизнес-процесса с токеном 995ea844-74a8-413b-96be-bc92462eff85 на сервере ELMA, расположенном на http://elma.someorg.ru. При этом бизнес-процесс будет запущен с определенными стартовыми параметрами. Перед началом выполнения процесса в его контекст будет загружено пять переменных: Name, Surname, Fathername, Age, Partner.
Возможность запуска бизнес-процессов при помощи POST-запроса имеется только при условии, что процесс был опубликован с корректно сформированным токеном и установленными флажками Запуск из внешних систем и Веб-запрос (POST) в блоке Варианты запуска процесса (рис. 2).
HTTP-запросы в браузере — HTTP API
Проще всего увидеть использование HTTP API прямо в браузере. Для удобства разработки и тестирования браузеры включают в себя панель разработчика — с ее помощью можно полностью проанализировать страницу, происходящие внутри процессы и HTTP-запросы.
В этом уроке мы обсудим, как работать с этой панелью и узнавать полезную информацию.
Чтобы открыть панель разработчика у себя в браузере, воспользуйтесь статьей . В этом курсе мы будем пользоваться панелью браузера Chrome:
Остальные браузеры работают почти идентично, поэтому будет несложно повторять то же самое в других браузерах.
Chrome DevTools
Здесь нас интересует вкладка Network. На ней отображаются все запросы, которые выполняет браузер в процессе загрузки страницы. Также здесь показаны картинки, шрифты, файлы стилей, JavaScript и HTML самой страницы:
На каждый из загружаемых ресурсов можно нажать. Появится еще несколько вкладок с информацией, какой HTTP-запрос был отправлен и какой HTTP-ответ был получен. Здесь можно увидеть все заголовки и превью загруженного ресурса:
В этой же вкладке появляются запросы к HTTP API, которые выполняются на странице, использующей API.
Чтобы отделить запросы к HTTP API от всего остального, на вкладке Network нужно нажать кнопку Fetch/XHR. Тогда в списке загружаемых ресурсов останутся ресурсы с типом xhr. Это и есть запросы к HTTP API.
Возьмем для примера форму входа. Когда пользователь авторизуется на сайте, то сайт выполняет запрос (или несколько запросов) к API. Можете самостоятельно проверить, как это работает:
- Перейдите на сайт https://frontend-chat-ru.hexlet.app/
- Откройте панель разработчика, перейдите на вкладку Network и нажмите Fetch/XHR
- Введите данные для входа: имя admin и пароль admin
Открыть доступ
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
- 130 курсов, 2000+ часов теории
- 1000 практических заданий в браузере
- 360 000 студентов
Наши выпускники работают в компаниях:
Отправка POST-запроса в JavaScript как отправка формы
Когда будет речь о перенаправлении браузера на другую страницу, одним из распространенных способов является использование GET-запроса. Он выглядит примерно так:
document.location.href = 'http://example.com/q=a';
Однако, в некоторых случаях, ресурс, к которому происходит обращение, может корректно отвечать только на POST-запросы. Если мы не генерируем такой запрос динамически, то можем использовать HTML-форму следующего вида:
А затем просто отправить эту форму из DOM. Но что если мы хотим использовать JavaScript для отправки такого запроса? Как выглядит код, который позволяет выполнить что-то вроде этого:
post_to_url('http://example.com/', );
Нужно учесть, что требуется решение, которое изменяет текущий URL браузера, аналогично отправке формы. Если это возможно с использованием XMLHttpRequest, то это не очевидно. Это не должно быть асинхронным и использовать XML, поэтому Ajax здесь не подходит.
Лучший кросс-браузерный подход предполагает создание формы с помощью JavaScript, добавление ее в DOM, а затем ее отправку. Вот как это выглядит:
function post_to_url(path, params) < var form = document.createElement('form'); form.method = 'POST'; form.action = path; for(let key in params) < if(params.hasOwnProperty(key)) < var hiddenField = document.createElement('input'); hiddenField.type = 'hidden'; hiddenField.name = key; hiddenField.value = params[key]; form.appendChild(hiddenField); >> document.body.appendChild(form); form.submit(); >
В этом коде создается новая форма с указанным путем и методом POST. Затем, для каждого ключа в переданном параметре, создается новое скрытое поле ввода и добавляется в форму. После этого форма добавляется в тело документа и отправляется. Именно так можно реализовать POST-запрос, похожий на отправку формы, с использованием JavaScript.