我正在尝试从服务器读取一个JSON编码的字节,该字节将缩进,但长度不可预测,并且没有明显的终止字节。我想将整个服务器响应读入一个字节。服务器将关闭连接。是否可以使用net
?
答案 0 :(得分:4)
作为@minikomi答案的补充,我想补充一点,如果您确定从服务器返回的字节是JSON编码的,那么就有一个很好的包encoding/json
。
http://golang.org/pkg/encoding/json/
如果您使用解码器直接从连接解码,有时不会返回错误。您可能希望使用fmt.Printf("%v\n", whateverDecodedFromTheConnection)
来查看连接关闭时解码器获取的内容。
例如,在我的情况下,使用encoding/gob
解码器将来自tcp连接的消息解码为定义为的结构:
type MessageType struct {
Type uint8
}
关闭连接后,decoder.Decode(&buffer)
会返回{0}
。这可能不是常见的情况,但需要注意一些事情。
答案 1 :(得分:2)
请查看http://golang.org/pkg/net/http/
上的文档 http Get将返回Response结构,其结构为io.ReadCloser
。
然后,您可以使用ioutil.ReadAll读取对字节数组的整个响应。
resp, err := http.Get("http://example.com/")
if err != nil {
// handle error
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)