2016-12-24 11 views
2

http get要求の応答をダンプし、ResponseWriterに非常に同じ応答を書き込もうとしています。ここに私のコードは次のとおりです。Goで、http get要求の応答をダンプしてhttp ResponseWriterに書き込む方法

package main 

import (
    "net/http" 
    "net/http/httputil" 
) 



func handler(w http.ResponseWriter, r *http.Request) { 
    resp, _ :=http.Get("http://google.com") 
    dump, _ :=httputil.DumpResponse(resp,true) 
    w.Write(dump) 
} 

func main() { 
    http.HandleFunc("/", handler) 
    http.ListenAndServe(":8080", nil) 
} 

私はgoogle.comのhtmlコードの代わりに、Googleのフロントページの全ページを取得し、私はプロキシのような効果を得ることができます方法はありますか?

+1

レスポンスの本文は、レスポンスの全部ではなく、 'w 'に書くべきです(httpヘッダ+ body)。 w.Write(body) '。 –

答えて

3

コピー応答ライターに、ヘッダー、ステータスとレスポンスボディ:

resp, err :=http.Get("http://google.com") 
if err != nil { 
    // handle error 
} 
defer resp.Body.Close() 

// headers 

for name, values := range resp.Header { 
    w.Header()[name] = values 
} 

// status (must come after setting headers and before copying body) 

w.WriteHeader(resp.StatusCode) 

// body 

io.Copy(w, resp.Body) 

プロキシサーバーを作成する場合は、net/http/httputil ReverseProxy typeは助けになるかもしれません。

+0

ありがとう!できます! –

関連する問題