Отправка строки HTTP-запроса на jupyter с python - PullRequest
0 голосов
/ 28 декабря 2018

Я попытался отправить HTTP-запрос на мою записную книжку jupyter с помощью модуля socket примерно так:

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.connect(('127.0.0.1', 8888))
    s.sendall(b'GET /api/contents HTTP/1.1 \n\n') # Maybe i didn't understand how HTTP requests work
    print(s.recv(1024))

Вывод (в терминале, где была записная книжка jupyter)выполняется):

Malformed HTTP message from 127.0.0.1: Malformed HTTP request line

И полученные данные HTTP/1.1 400 Bad Request\r\n\r\n

И он говорит, что использует этот разделитель re.compile(b'\r?\n\r?\n')

Jupyter Notebook Server API

1 Ответ

0 голосов
/ 28 декабря 2018

Если вы не хотите указывать какие-либо заголовки в запросе HTTP, просто завершите его последовательностью \r\n\r\n:

s.sendall(b'GET /api/contents HTTP/1.1\r\n\r\n')

HTTP использует последовательность \r\n в качестве разделителя строк (как в Windows) и двойной последовательности (\r\n\r\n), чтобы отметить конец заголовка запроса.Обычно запрос выглядит так:

GET /api/contents HTTP/1.1\r\n
User-Agent: blablah\r\n
....\r\n
\r\n
<HERE GOES REQUEST BODY>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...