[英]Buffer issue cannot use <type> as type io.Reader in argument to http.NewRequest golang
我在golang主體參數的http.NewRequest中傳遞字符串時遇到問題。
我得到的錯誤是:
無法在http.NewRequest的參數中使用req.Body(類型字符串)作為io.Reader類型:字符串未實現io.Reader(缺少Read方法)
同樣,在其他一些用例中,需要使用Buffer作為輸入,而不是特定類型或數組。 例如,當需要輸入為緩沖區時,為byte []。
錯誤的含義是什么,以及解決該錯誤和理解golang試圖執行的方法是什么。
編輯:這是我遇到問題的行,但未找到任何參考。
http.NewRequest(req.Method,req.Url,req.Body)
http.NewRequest(req.Method,req.Url,strings.NewReader(req.Body))解決了此問題。 我還計划添加答案(作為一種僅供參考的問題)
此錯誤意味着http.NewRequest
方法將io.Reader
接口作為其body
參數:
func NewRequest(method, urlStr string, body io.Reader) (*Request, error)
這樣,您就可以輕松地傳遞文件,與服務器的連接以及其他內容對請求的響應。
“問題”是string
沒有實現io.Reader
接口,該接口定義如下:
type Reader interface {
Read(p []byte) (n int, err error)
}
這不是一個很大的問題,您可以使用strings.Reader
類型,它是實現所述接口的string
的包裝。
func NewReader(s string) *Reader
提示:還有一個[]byte
。您有[]byte
作為參數傳遞時的bytes.Reader
類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.