Получение содержимого из HTML-формы POST с использованием TCPSocket

Повторно используя метод gets для объекта TCPSocket, я получаю следующий вывод

POST /targetPage.html HTTP/1.1
Host: 127.0.0.1:7125
...
...
...
Keep-Alive: 115
DNT: 1
Connection: keep-alive
Referer: http://127.0.0.1:7125/
Content-Type: application/x-www-form-urlencoded
Content-Length: 45

Если я снова использую.gets, все зависает, как мне получить этот "контент" длиной 45? Могу ли я получить это из моего объекта TCPSocket или мне нужно использовать что-то еще?

2 ответа

Решение

gets читает строку, поэтому он будет блокироваться до истечения времени ожидания соединения или до чтения символа новой строки. Вы должны использовать read метод, который читает определенное количество байтов (что очень удобно в заголовке Content-Length).

Включить заголовок:

Подключение: закрыть

в шапку. Это предотвратит зависание перед тем, как фактически прочитать тело запроса.

Другие вопросы по тегам