Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 2, 2016 21:47:16

ivanzzz
Зарегистрирован: 2016-02-08
Сообщения: 58
Репутация: +  0  -
Профиль   Отправить e-mail  

Как сделать get запрос через http пакет?

Как обратится к сайту используя именно http пакет (не по ссылке)

GET /img/ HTTP/1.0
Location: mytestsite.ru
Host: ...
и получить ответ?

Отредактировано ivanzzz (Июнь 2, 2016 22:01:07)

Офлайн

#2 Июнь 3, 2016 01:13:15

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9992
Репутация: +  857  -
Профиль   Отправить e-mail  

Как сделать get запрос через http пакет?

Офлайн

#3 Июнь 3, 2016 11:33:22

old_monty
Зарегистрирован: 2015-09-27
Сообщения: 238
Репутация: +  20  -
Профиль   Отправить e-mail  

Как сделать get запрос через http пакет?

У меня получилось сделать из консоли запрос GET и получить ответ (в данном примере сайт akva.by взят навскидку, это белорусский форум аквариумистов):

>>> from http.client import HTTPConnection
>>> from urllib.parse import urlencode
>>> con = HTTPConnection("akva.by")
>>> con.request("GET", "/forum/index.php")
>>> result = con.getresponse()
>>> print(result.read().decode("utf-8"))
# ... (огромный объем выданного текста, кода JavaScript и HTML-разметки здесь не приводится)
>>> con.close()

Отредактировано old_monty (Июнь 3, 2016 11:46:25)

Офлайн

#4 Июнь 3, 2016 19:13:19

ivanzzz
Зарегистрирован: 2016-02-08
Сообщения: 58
Репутация: +  0  -
Профиль   Отправить e-mail  

Как сделать get запрос через http пакет?

А как добавить остальные заголовки?

Офлайн

#5 Июнь 3, 2016 21:21:37

old_monty
Зарегистрирован: 2015-09-27
Сообщения: 238
Репутация: +  20  -
Профиль   Отправить e-mail  

Как сделать get запрос через http пакет?

ivanzzz
А как добавить остальные заголовки?
Об этом подробно рассказывается в документации. Там сказано, что метод request объекта HTTPConnection имеет опциональные именованные параметры:
HTTPConnection.request(method, url, body=None, headers={})
Как видим, HTTP-заголовки для отправки в запросе на сервер указываются в виде словаря. В документации также отдельно сказано насчет заголовка Content-Length:
If headers does not contain a Content-Length item, one is added automatically if possible
То есть, если заголовок Content-Length не указан в параметре headers, то он будет добавлен автоматически, если это возможно.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version