我正在尝试向给定的URL请求,并捕获重定向URL及其遵循的状态代码。
我试图为我的特定问题寻找答案-这很接近。
但是,我还需要在整个连接上添加代理,用户代理和超时,即无论有多少重定向/代理等待时间等,时间量都不应超过X秒。
我已经通过设置请求标头来处理用户代理,并通过将其添加到Transport结构来代理。
我尝试探索CheckRedirect进行重定向-但这只给了我Url,还需要状态代码,因此我必须实现RoundTrip函数。
到目前为止,一切工作正常-除了超时。
这是我到目前为止所拥有的-游乐场链接
我也在这里粘贴了相关的代码-操场上有一个完整的版本,并带有一个模拟重定向服务器-不幸的是,它惊慌地说连接可能由于操场上的限制而被拒绝-尽管它完全在本地工作。
问题1:如何添加超时?
尝试1:
但是Go抱怨说" * main.TransportWrapper不支持CancelRequest;不支持超时"
尝试2:
但是Go抱怨说" dt.CancelRequest未定义(类型http.RoundTripper没有字段或方法CancelRequest)"
如何在不做太多事情的情况下实现此CancelRequest,而让默认的CancelRequest接管呢?
问题2:我走的路不好吗,有没有解决问题的替代方法,
给定一个Url,Proxy,UserAgent和Timeout-返回响应以及重定向URL及其状态代码,然后到达目的地。
我希望我已经适当地措辞了。
谢谢
您可以提供回调以执行所需的操作。
如果您确实想创建自己的传输器来扩展其他功能,则需要提供
更常见的是,您将嵌入
一个最小的示例如下所示:
然后您可以在客户端中使用超时: