簡體   English   中英

緩沖區問題無法使用 <type> 作為http.NewRequest golang的參數中的io.Reader類型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM