如何在Golang中获取http重定向状态代码

我想记录301s和302s,但是找不到在Client.Do,Get,doFollowingRedirects,CheckRedirect中读取响应状态代码的方法。我是否必须自己实施重定向才能实现这一目标?

回答:

http.Client类型允许您指定自定义传输方式,这应允许您执行后续操作。应该执行以下操作:

type LogRedirects struct {

Transport http.RoundTripper

}

func (l LogRedirects) RoundTrip(req *http.Request) (resp *http.Response, err error) {

t := l.Transport

if t == nil {

t = http.DefaultTransport

}

resp, err = t.RoundTrip(req)

if err != nil {

return

}

switch resp.StatusCode {

case http.StatusMovedPermanently, http.StatusFound, http.StatusSeeOther, http.StatusTemporaryRedirect:

log.Println("Request for", req.URL, "redirected with status", resp.StatusCode)

}

return

}

(如果仅支持链接到默认传输,则可以稍微简化一下)。

然后,您可以使用此传输方式创建客户端,并记录所有重定向:

client := &http.Client{Transport: LogRedirects{}}

这是您可以尝试的完整示例:http :

//play.golang.org/p/8uf8Cn31HC

以上是 如何在Golang中获取http重定向状态代码 的全部内容, 来源链接: utcz.com/qa/397741.html

回到顶部