puede - ¿Cómo leo un cuerpo de respuesta de transmisión mediante el paquete net/http de Golang?
pagina web con go (2)
Estoy tratando de conectarme a un punto final que realiza la transmisión http de datos json. Me preguntaba cómo realizar una solicitud básica utilizando el paquete net / http de Go y leer la respuesta a medida que entra. Actualmente, solo puedo leer la respuesta cuando se cierra la conexión.
resp, err := http.Get("localhost:8080/stream")
if err != nil {
...
}
...
// perform work while connected and getting data
¡Cualquier idea sería muy apreciada!
¡Gracias!
-RC
La forma de hacer el análisis JSON de transmisión es con un Decoder:
json.NewDecoder(resp.Body).Decode(&yourStuff)
Para una API de transmisión en la que es un montón de objetos que se devuelven (a la Twitter), debería transmitirse muy bien con este modelo y la API de codificación / json incorporada. Pero si es una respuesta grande donde tienes un objeto que tiene una matriz gigante con 10 MB de material, es probable que tengas que escribir tu propio decodificador para extraer esas piezas internas y devolverlas. Me estoy topando con ese problema con una biblioteca que he escrito.
La respuesta proporcionada por Eve Freeman es la forma correcta de leer los datos de json. Para leer cualquier tipo de datos, puede utilizar el siguiente método:
resp, err := http.Get("http://localhost:3000/stream")
...
reader := bufio.NewReader(resp.Body)
for {
line, err := reader.ReadBytes(''/n'')
...
log.Println(string(line))
}