Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Http 如何从字节缓冲区多次读取?_Http_Go_Byte - Fatal编程技术网

Http 如何从字节缓冲区多次读取?

Http 如何从字节缓冲区多次读取?,http,go,byte,Http,Go,Byte,我正在尝试使用相同的请求主体创建两个HTTP请求。不幸的是,第二个请求发送了一个空的正文 w := httptest.NewRecorder() w2 := httptest.NewRecorder() pd := &postData{ Data: 5, } b := new(bytes.Buffer) json.NewEncoder(b).Encode(pd) req, _ := http.NewRequest("PUT", "/v1/jobs/echo", b) server

我正在尝试使用相同的请求主体创建两个HTTP请求。不幸的是,第二个请求发送了一个空的正文

w := httptest.NewRecorder()
w2 := httptest.NewRecorder()
pd := &postData{
    Data: 5,
}
b := new(bytes.Buffer)
json.NewEncoder(b).Encode(pd)
req, _ := http.NewRequest("PUT", "/v1/jobs/echo", b)
server.ServeHTTP(w, req)

req, _ = http.NewRequest("PUT", "/v1/jobs/echo", b)
server.ServeHTTP(w2, req)
在阅读文档和源代码的bytes.Buffer时,似乎无法将缓冲区重置为0-有一个重置方法,但这也会清除缓冲区的内部状态


有没有办法“重播”围棋中的任何阅读器?字节。缓冲区或任何其他读取器。

确定。所以我不考虑这个理想,最好先把它读入一个阅读器,但是如果你把你的数据放在一个<代码>字节。Reader < /C> >而不是<代码>字节。
w := httptest.NewRecorder()
w2 := httptest.NewRecorder()
pd := &postData{
    Data: 5,
}
b := new(bytes.Buffer)
json.NewEncoder(b).Encode(pd)
r := bytes.NewReader(b.Bytes())
req, _ := http.NewRequest("PUT", "/v1/jobs/echo", r)
server.ServeHTTP(w, req)

r.Seek(0, 0)
req, _ = http.NewRequest("PUT", "/v1/jobs/echo", r)
server.ServeHTTP(w2, req)

嗯。所以我不考虑这个理想,最好先把它读入一个阅读器,但是如果你把你的数据放在一个<代码>字节。Reader < /C> >而不是<代码>字节。
w := httptest.NewRecorder()
w2 := httptest.NewRecorder()
pd := &postData{
    Data: 5,
}
b := new(bytes.Buffer)
json.NewEncoder(b).Encode(pd)
r := bytes.NewReader(b.Bytes())
req, _ := http.NewRequest("PUT", "/v1/jobs/echo", r)
server.ServeHTTP(w, req)

r.Seek(0, 0)
req, _ = http.NewRequest("PUT", "/v1/jobs/echo", r)
server.ServeHTTP(w2, req)

也许我遗漏了什么,但我一个字节都不相信。缓冲区有一个Seek()方法。字节。但Reader有。@KevinBurke用至少有效的方法编辑了这篇文章。也许我遗漏了什么,但我不相信字节。Buffer有一个Seek()方法。但是,Reader有。@KevinBurke用至少有效的东西编辑了这个。