当我在 golang body 参数中的 http.NewRequest 中传递字符串时遇到问题。我得到的错误是:不能在 http.NewRequest 的参数中使用 req.Body(类型字符串)作为类型 io.Reader:字符串没有实现 io.Reader(缺少读取方法)类似地,还有其他用例需要 Buffer 作为输入而不是特定类型或它的数组。例如,需要输入时的 byte[] 是缓冲区。该错误是什么意思,解决它的方法是什么,并了解 golang 试图强制执行的内容。编辑:这是我遇到问题的行,没有找到任何参考。http.NewRequest(req.Method, req.Url, req.Body)http.NewRequest(req.Method, req.Url, strings.NewReader(req.Body)) 解决了这个问题。我也打算添加答案(作为仅供参考的问题)
1 回答

达令说
TA贡献1821条经验 获得超6个赞
此错误意味着该http.NewRequest
方法将io.Reader
接口作为其body
参数:
func NewRequest(method, urlStr string, body io.Reader) (*Request, error)
这样做是为了让您可以轻松地传递文件、与服务器的连接、来自其他事物的响应对请求的响应。
“问题”是 astring
没有实现io.Reader
接口,接口定义如下:
type Reader interface { Read(p []byte) (n int, err error)}
这不是一个大问题,您可以使用实现上述接口strings.Reader
的封装类型string
。
func NewReader(s string) *Reader
提示:还有一个bytes.Reader
类型可以用于[]byte
作为参数传递的时间。
- 1 回答
- 0 关注
- 216 浏览
添加回答
举报
0/150
提交
取消