我正在尝试向给定的URL发出请求,并捕获重定向的URL及其后面的状态代码.
我已经尝试寻找我的具体问题的答案 - 这很接近.
但是,我还需要在整个连接上添加代理,用户代理和超时,即无论有多少重定向/代理延迟等,时间量不应超过X秒.
我通过设置请求标头来处理user-agent,并通过将其添加到Transport结构来代理.我尝试探索CheckRedirect的重定向 - 但这只给了我Url,我也需要状态代码,所以我必须实现RoundTrip函数.
到目前为止一切运作良好 - 除了Timeout.继承人到目前为止我所拥有的 - 游乐场链接 我也在这里粘贴了相关的代码 - 游乐场有一个完整版本,有一个模拟重定向服务器 - 不幸的是,恐慌说连接被拒绝可能是因为游乐场的限制 - 它完全在本地工作虽然.
type Redirect struct {
StatusCode int
URL string
}
type TransportWrapper struct {
Transport http.RoundTripper
Url string
Proxy string
UserAgent string
TimeoutInSeconds int
FinalUrl string
RedirectUrls []Redirect
}
// Implementing Round Tripper to capture intermediate urls
func (t *TransportWrapper) RoundTrip(req *http.Request) (*http.Response, error) {
transport := t.Transport
if transport == nil {
transport = http.DefaultTransport
}
resp, err := …Run Code Online (Sandbox Code Playgroud)