Насколько я понимаю, из вашего кода вы подходите к открытию сокета сервера и построчному чтению.
Что вы должны здесь сделать, это найти заголовок "Content-length".
Thisзаголовок показывает размер тела, переносимого в запросе POST.
По вашему вопросу, я думаю, что вы получаете запрос POST, подобный следующему:
POST /path HTTP/1.1
From: myUser
User-Agent: java
Content-Length: 32
name1=value1&name2=value2
Обратите внимание на дополнительную новую строку (т.е.'\n'
) между заголовками HTTP и фактическими данными.
Следует использовать длину содержимого и тот факт, что вы уже знаете, где находятся данные, относящиеся к заголовкам HTTP, внутри запроса HTTP, чтобы проанализировать его и извлечь значения
Так что в конечном итоге вы получите name1=value1&name2=value2
.
Если вы просто хотите сделать это как упражнение, продолжайте.
Это сложнее, чем вы думаете, и вы должны смотреть наRFC немного.
Например, я не помню, это на самом деле '\n'
или '\r\n'
или что-то подобное.
Также я не помню, будет ли всегда длина контента(например, в ответах он может отсутствовать, и http-сервер может отправлять ответ в кодированных блоках).
Если вам нужно сделать это хотя бы серьезно, то вам следует использовать реализацию http-сервера.
Уже естьреализация http-сервера поставляется в java, или вы можете использовать apache.
Не пытайтесь заново изобретать колесо, если вы не заняты ради образования или развлечения.