小编Abh*_*nna的帖子

Go lang使用超时捕获重定向网址和状态代码

我正在尝试向给定的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)

redirect http go

5
推荐指数
1
解决办法
1330
查看次数

标签 统计

go ×1

http ×1

redirect ×1