我正在从Go中流式传输http,服务器按预期响应“传输编码:分块”。有人告诉我,Go中的http客户端应自动从http响应中拆下正文,删除\ r \ n。但就我而言,它不会自动删除,因此我必须使用ChunkedReader读取正文。
有人知道为什么golang不能自动对我的身体脱壳吗?
编辑: 这是http请求:
var transport = http.Transport{
Proxy: nil,
ExpectContinueTimeout: 0,
MaxResponseHeaderBytes: 16384}
var httpClient = http.Client{
Transport: &transport,
CheckRedirect: func(req *http.Request, via []*http.Request) error {
return http.ErrUseLastResponse
}}
bodyReader, bodyWriter := io.Pipe()
req, _ := http.NewRequest("GET", "http://x.x.x.x/stream", bodyReader)
response, err := httpClient.Do(req)
buffer := make([]byte, 2 << 15)
n, readErr = response.Body.Read(buffer) <-- should be dechunked body
读入缓冲区的数据未分块。知道为什么吗?
答案 0 :(得分:0)
我弄清楚了为什么身体不会自动脱矮。这是因为HTTP响应是HTTP / 1.0。在这种情况下,golang会忽略传输编码标头。