如下所示,简单做个代理
func main() {
remote, _ := url.Parse("http://www.xxxx.com")
proxy := httputil.NewSingleHostReverseProxy(remote)
log.Fatal( http.ListenAndServe(":9999", proxy))
}
我想把代理后返回的一些内容替换掉.但是怎么都成功不了. 下面这样怎么没反映? go 的 http 太"精髓"了.才学几天,摸不着门道. 哪位同学能指个路吗?谢谢.
func (t *transport) RoundTrip(req *http.Request) (res *http.Response, err error) {
res, err = t.RoundTripper.RoundTrip(req)
b, err := ioutil.ReadAll(res.Body)
if err != nil {
return nil, err
}
defer res.Body.Close()
b = bytes.Replace(b, []byte("Keywords"), []byte("xxxxxxxx"), -1)
body := ioutil.NopCloser(bytes.NewReader(b))
res.Body = body
res.ContentLength = int64(len(b))
res.Header.Set("Content-Length", strconv.Itoa(len(b)))
return res, nil
}