client.Do("POST", "example.com", body)有没有办法在接收/关闭整个响应正文之前执行并读取响应标头?这类似于 JavaScript XHR 请求发出一个事件,表明已收到标头,您可以在请求的其余部分到达之前读取它们。我想要完成的是创建一种“智能客户端”,它使用服务器标头中的信息来确定在请求正文中上传的内容。因此,我需要启动请求,读取响应标头,然后开始写入请求正文。由于我的系统的性质,我无法将其拆分为不同的请求。我相信在协议级别是可能的,但我不确定go的http库是否支持它。
2 回答
慕无忌1623718
TA贡献1744条经验 获得超4个赞
http 客户端 Do 函数在返回整个响应正文之前不会阻塞。如果您不想阅读完整的响应,为什么不在检查标题后使用 res.Body.Close() 呢?我认为如果你想要大致相同的行为,它应该有效。据医生说。
当读取 Body 字段时,响应正文将按需流式传输。如果网络连接失败或服务器终止响应,Body.Read 调用将返回错误。
尽管默认 http.Client 的 DefaultTransport(即 http.Transport)并不保证在您指定之前它不会读取任何字节。
RISEBY
TA贡献1856条经验 获得超5个赞
OPTIONS
您可以通过在发送实际请求之前向 url发送请求并读取响应标头来满足您的要求。
响应标头将包含执行首选请求所需的所有标头。
req, _ := http.NewRequest("OPTIONS", "example.com", nil) resp, _ := client.Do(req)
- 2 回答
- 0 关注
- 139 浏览
添加回答
举报
0/150
提交
取消