Pra*_*eek 2 buffer httprequest go
当我在golang body param的http.NewRequest中传递字符串时,我遇到了一个问题.
我得到的错误是:
不能使用req.Body(类型字符串)作为http.NewRequest参数中的类型io.Reader:string不实现io.Reader(缺少Read方法)
类似地,还有其他用例需要将Buffer作为输入而不是特定类型或其数组.例如,当需要输入是缓冲区时,byte [].
错误是什么意思,解决问题的方法是什么,以及了解golang试图强制执行的内容.
编辑:这是我遇到问题的一行,没有找到任何参考.
http.NewRequest(req.Method,req.Url,req.Body)
http.NewRequest(req.Method,req.Url,strings.NewReader(req.Body))解决了这个问题.我还计划添加答案(作为FYI类型的问题)
此错误意味着该http.NewRequest方法将io.Reader接口作为其body参数:
func NewRequest(method, urlStr string, body io.Reader) (*Request, error)
Run Code Online (Sandbox Code Playgroud)
它以这种方式完成,因此您可以轻松地将文件,与服务器的连接,以及其他内容的响应传递给请求.
"问题"是a string没有实现io.Reader接口,定义如下:
type Reader interface {
Read(p []byte) (n int, err error)
}
Run Code Online (Sandbox Code Playgroud)
它不是一个大问题,你可以使用实现上述接口strings.Reader的包装类型string.
func NewReader(s string) *Reader
Run Code Online (Sandbox Code Playgroud)
提示:您还有一个bytes.Reader类型[]byte作为参数传递.
| 归档时间: |
|
| 查看次数: |
4436 次 |
| 最近记录: |