2016-05-09 1 views
0

golang body paramのhttp.NewRequestに文字列を渡していたときに問題が発生しました。バッファの問題では、タイプとして<type>を使用できません。http.NewRequestの引数のリーダー。golang

私が得たエラー:

は http.NewRequestに引数タイプio.Readerとしてreq.Body(文字列型)を使用することはできません。 文字列は、io.Reader(行方不明Readメソッドを実装していません。 )

同様に、バッファが特定の型または配列の代わりに入力として必要な場合もあります。 たとえば、必要な入力がバッファの場合は、バイト[]。

エラーは何を意味し、それを解決し、ゴランが実施しようとしていることを理解する方法は何か?

編集:これは私が問題を抱えていた行であり、参照が見つかりませんでした。

http.NewRequest(req.Method、req.Url、req.Body)

http.NewRequest(req.Method、req.Url、strings.NewReader(req.Body))解きます問題。それがこのように行われている

func NewRequest(method, urlStr string, body io.Reader) (*Request, error) 

: 私は、このエラーはhttp.NewRequest方法は、そのbody引数としてio.Readerインターフェースを取ることを意味

+2

コードを投稿してください。 –

+0

ボディを文字列として渡したときに、エラーがhttp.NewRequestにあることが既に説明されています。 – Prateek

+2

誰も、なぜdownvoteに質問することができますか?私はフォーラムでそのような質問の参照を見つけられませんでした。 – Prateek

答えて

5

(質問のFYIタイプのような)だけでなく、答えを追加することを計画していましたファイルへの接続、サーバーへの接続、要求に対する何か他のものからの応答を簡単に渡すことができます。

「問題」はstringは以下のように定義されてio.Readerインターフェース、実装していないということです。

type Reader interface { 
    Read(p []byte) (n int, err error) 
} 

そのない大きな問題が、あなたの周りのラッパーですstrings.Readerタイプを使用することができます前記インタフェースを実装する。

func NewReader(s string) *Reader 

ヒント:また、あなたは、パラメータとして渡す[]byteを持っている時間のbytes.Readerタイプがあります。

+0

この回答はコード例です。 http://stackoverflow.com/a/29747410/264567 – bfrederix

関連する問題