我正在尝试从服务器读取 JSON 编码的字节,该字节将缩进,但长度不可预测,并且没有明显的终止字节。我想将整个服务器响应读入一个字节。服务器将关闭连接。是否可以使用 来做到这一点net
?
问问题
178 次
2 回答
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}
. 这可能不是一种常见的情况,但需要注意一些事情。
于 2012-11-02T02:08:34.377 回答
2
请查看http://golang.org/pkg/net/http/上的文档
http Get将返回一个Response结构,它的 Body 类型为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)
于 2012-11-02T01:21:32.997 回答