Протокол http или Hyper Text Transfer Protocol работает на модели клиент-сервер. Обычно веб-браузер является клиентом, а компьютер, на котором размещается веб-сайт, является сервером. В python мы используем модуль запросов для создания http-запросов. Это очень мощный модуль, который может обрабатывать многие аспекты http-связи, помимо простых данных запросов и ответов. Он может обрабатывать аутентификацию, сжатие / распаковку, групповые запросы и т. Д.
HTTP-клиент отправляет HTTP-запрос на сервер в форме сообщения запроса, которое имеет следующий формат:
- Строка запроса
- Ноль или более полей заголовка (General | Request | Entity), за которыми следует CRLF
- Пустая строка (т. Е. Строка, не предшествующая CRLF), указывающая конец полей заголовка
- При желании тело сообщения
В следующих разделах объясняется каждая из сущностей, используемых в сообщении HTTP-запроса.
Request-Line
Строка запроса начинается с токена метода, за которым следует Request-URI и версия протокола и заканчивается CRLF. Элементы разделяются пробелами SP.
В следующих разделах объясняется каждая из сущностей, используемых в сообщении HTTP-запроса.
Строка запроса начинается с токена метода, за которым следует Request-URI и версия протокола и заканчивается CRLF. Элементы разделяются пробелами SP.
Request-Line = Method SP Request-URI SP HTTP-Version CRLF
Давайте обсудим каждую из частей, упомянутых в строке запроса.
Метод запроса
Метод запроса указывает метод, который должен быть выполнен на ресурсе, идентифицированном данным Request-URI . Метод чувствителен к регистру и должен всегда указываться в верхнем регистре. В следующей таблице перечислены все поддерживаемые методы в HTTP / 1.1.
SN | Метод и описание |
---|---|
1 | ПОЛУЧИТЬ
Метод GET используется для получения информации с данного сервера с использованием заданного URI. Запросы с использованием GET должны только извлекать данные и не должны оказывать никакого другого влияния на данные. |
2 | ГОЛОВА
То же, что и GET, но он переносит только строку состояния и раздел заголовка. |
3 | СООБЩЕНИЕ
POST-запрос используется для отправки данных на сервер, например, информации о клиенте, загрузки файла и т. Д. С использованием HTML-форм. |
4 | ПОЛОЖИЛ
Заменяет все текущие представления целевого ресурса на загруженный контент. |
5 | УДАЛЯТЬ
Удаляет все текущие представления целевого ресурса, заданного URI. |
6 | CONNECT
Устанавливает туннель к серверу, идентифицированному данным URI. |
7 | ОПЦИИ
Опишите параметры связи для целевого ресурса. |
8 | TRACE
Выполняет тестирование обратной связи с указанием пути к целевому ресурсу. |
Метод GET используется для получения информации с данного сервера с использованием заданного URI. Запросы с использованием GET должны только извлекать данные и не должны оказывать никакого другого влияния на данные.
То же, что и GET, но он переносит только строку состояния и раздел заголовка.
POST-запрос используется для отправки данных на сервер, например, информации о клиенте, загрузки файла и т. Д. С использованием HTML-форм.
Заменяет все текущие представления целевого ресурса на загруженный контент.
Удаляет все текущие представления целевого ресурса, заданного URI.
Устанавливает туннель к серверу, идентифицированному данным URI.
Опишите параметры связи для целевого ресурса.
Выполняет тестирование обратной связи с указанием пути к целевому ресурсу.
Request-URI
Request-URI является унифицированным идентификатором ресурса и идентифицирует ресурс, к которому применяется запрос. Ниже приведены наиболее часто используемые формы для указания URI:
Request-URI = "*" | absoluteURI | abs_path | authority
SN | Метод и описание |
---|---|
1 | Звездочка * используется, когда HTTP-запрос применяется не к конкретному ресурсу, а к самому серверу, и разрешен только в том случае, если используемый метод не обязательно применяется к ресурсу. Например:
ОПЦИИ * HTTP / 1.1 |
2 | AbsoluteURI используется, когда HTTP-запрос делается к прокси. Прокси запрашивается для пересылки запроса или службы из допустимого кэша и возврата ответа. Например:
ПОЛУЧИТЕ http://www.w3.org/pub/WWW/TheProject.html HTTP / 1.1 |
3 | Наиболее распространенная форма Request-URI — это та, которая используется для идентификации ресурса на исходном сервере или шлюзе. Например, клиент, желающий получить ресурс непосредственно с исходного сервера, создаст TCP-соединение с портом 80 хоста «www.w3.org» и отправит следующие строки:
GET /pub/WWW/TheProject.html HTTP / 1.1 Хост: www.w3.org Обратите внимание, что абсолютный путь не может быть пустым; если ни один не присутствует в исходном URI, он ДОЛЖЕН быть задан как «/» (корень сервера). |
ОПЦИИ * HTTP / 1.1
ПОЛУЧИТЕ http://www.w3.org/pub/WWW/TheProject.html HTTP / 1.1
GET /pub/WWW/TheProject.html HTTP / 1.1
Хост: www.w3.org
Обратите внимание, что абсолютный путь не может быть пустым; если ни один не присутствует в исходном URI, он ДОЛЖЕН быть задан как «/» (корень сервера).
Использование запросов Python
Мы будем использовать модуль запросов для изучения http запроса.
pip install requests
В приведенном ниже примере мы видим случай простого запроса GET и распечатки результата ответа. Мы выбираем для печати только первые 300 символов.
# How to make http request import requests as req r = req.get('http://www.tutorialspoint.com/python/') print(r.text)[0:300]
Когда мы запускаем вышеуказанную программу, мы получаем следующий вывод:
<!DOCTYPE html> <!--[if IE 8]><html class="ie ie8"> <![endif]--> <!--[if IE 9]><html class="ie ie9"> <![endif]--> <!--[if gt IE 9]><!--> <html> <!--<![endif]--> <head> <!-- Basic --> <meta charset="utf-8"> <title>Python Tutorial</title> <meta name="description" content="Python Tutorial