我正在尝试连接到一个以HTTP流式传输JSON数据的端点。我想知道如何使用Go语言的net/http包执行基本请求并在响应到达时读取响应。目前,我只能在连接关闭时才能读取响应。
resp, err := http.Get("localhost:8080/stream")
if err != nil {
...
}
...
// perform work while connected and getting data
任何意见都将不胜感激!谢谢!
-RC
我正在尝试连接到一个以HTTP流式传输JSON数据的端点。我想知道如何使用Go语言的net/http包执行基本请求并在响应到达时读取响应。目前,我只能在连接关闭时才能读取响应。
resp, err := http.Get("localhost:8080/stream")
if err != nil {
...
}
...
// perform work while connected and getting data
任何意见都将不胜感激!Eve Freeman提供的答案是读取Json数据的正确方法。对于读取任何类型的数据,您可以使用以下方法:
resp, err := http.Get("http://localhost:3000/stream")
...
reader := bufio.NewReader(resp.Body)
for {
line, err := reader.ReadBytes('\n')
...
log.Println(string(line))
}
Decoder:
json.NewDecoder(resp.Body).Decode(&yourStuff)
对于一个流式API,如果有一堆对象返回(比如Twitter),那么使用这个模型和内置的encoding/json API应该是很好的。但如果它是一个大响应,其中一个对象有一个包含10MB内容的巨大数组,你可能需要编写自己的解码器来提取这些内部片段并返回它们。我在一个我写的库中遇到了这个问题。