【发布时间】:2013-04-26 16:38:38
【问题描述】:
某些 HTTP 方法,例如 POST,需要在标头和双 CRLF 之后发送正文。
其他人,例如GET,没有正文,对他们来说,双CRLF标志着请求的结束。
但其他人呢:PUT、DELETE、...如何知道哪个需要身体?
通用 HTTP 客户端应该如何响应未知的 HTTP 方法?拒绝它?默认需要body,还是默认不需要body?
我们将不胜感激。
编辑:我将详细说明我的问题,正如 cmets 中所问的那样。
我正在设计一个通用的 HTTP 客户端,程序员可以使用它向任何服务器发送任意 HTTP 请求。
客户端可以这样使用(伪代码):
HttpClient.request(method, url [, data]);
数据是可选的,可以是原始数据(字符串),也可以是键/值对的关联数组。
如果数据是一个数组,该库将对数据进行 url 编码,然后将数据附加到 URL 以用于 GET 请求,或者将其发送到消息正文以用于 POST 请求。
因此,鉴于开发人员选择的 HTTP 方法,我试图确定此 HttpClient 是否必须/应该/不得/不应在请求中包含消息正文。
【问题讨论】:
-
通用 http 客户端 -> 通用 http 服务器。
-
@ShawnBalestracci : ?
-
请解释您要做什么。为什么你想知道哪些方法需要一个body?你想写一个 HTTP 服务器吗?你做过any research吗?客户端也执行请求,从而确定要使用的方法;所以客户不能发出它不知道的方法。你是说服务器吗?我也不明白你为什么对何时发送尸体感到好奇。当你知道你想发送一个身体,所以如果你不知道你是否想要,你可能不应该。
-
A body is allowed for
GET- 它不能改变GET请求的行为(所以,如果你能想到一个实际有效的用于此) -
@CodeCaster 我不知道方法是什么,这是我正在设计的通用客户端。请查看我更新的问题。
标签: http