一些 HTTP 方法,例如POST
,要求在 headers 和 double 之后发送正文CRLF
。
其他的,例如GET
,没有正文,对他们来说,双CRLF
标是请求的结束。
但是其他人呢:PUT
, DELETE
, ... 如何知道哪个需要身体?
通用 HTTP 客户端应该如何响应未知的 HTTP 方法?拒绝它?默认需要正文,还是默认不需要正文?
指向相关规范的指针将不胜感激。
编辑:我会详细说明我的问题,正如评论中所问的那样。
我正在设计一个通用的 HTTP客户端,程序员可以使用它向任何服务器发送任意 HTTP 请求。
客户端可以这样使用(伪代码):
HttpClient.request(method, url [, data]);
数据是可选的,可以是原始数据(字符串),也可以是键/值对的关联数组。
如果它是一个数组,该库将对数据进行 url 编码,然后将数据附加到GET
请求的 URL 中,或者将其发送到请求的消息正文中POST
。
因此,鉴于开发人员选择的 HTTP 方法,我试图确定此 HttpClient 是否必须/应该/不得/不应在请求中包含消息正文。