Некоторые HTTP-методы, такие как POST
, требуют отправки тела после заголовков и двойного CRLF
.
Другие, такие как GET
, не имеют тела, а для них двойной CRLF
обозначает конец запроса.
Но как насчет других: PUT
, DELETE
,... как узнать, какой из них требуется тело?
Как общий HTTP-клиент должен реагировать на неизвестный HTTP-метод? Отклонить его? Требуется тело по умолчанию или не требуется тело по умолчанию?
Будет оценен указатель на соответствующую спецификацию.
Изменить. Я подробно расскажу о своем вопросе, как это было задано в комментариях.
Я разрабатываю общий HTTP клиент, который программист может использовать для отправки произвольных HTTP-запросов на любой сервер.
Клиент может использоваться как этот (псевдокод):
HttpClient.request(method, url [, data]);
Данные являются необязательными и могут быть необработанными данными (строкой) или ассоциативным массивом пар ключ/значение.
Библиотека будет кодировать url-данные, если это массив, либо добавить данные в URL-адрес для запроса GET
, либо отправить его в тело сообщения для запроса POST
.
Поэтому я пытаюсь определить, должен ли этот HttpClient/должен/не должен/не должен/не включать тело сообщения в запрос, учитывая метод HTTP, выбранный разработчиком.