我想记录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
问题内容: 调用JAX-WS端点时,如何获取HTTP响应代码? 在下面的示例代码中,在调用Web服务时可能会引发Exception,例如或。 在这种情况下,如何从HTTP响应中获取HTTP状态代码? 问题答案: 完成@Praveen答案后,您必须将变成原始值,然后从上下文中获取值。 如果您在托管的Web服务客户端中发生异常,请不要忘记将事务标记为回滚。
我希望检索HTTP响应状态代码(例如,400、401、403、503等),以防请求失败(理想情况下也是成功)。在这段代码中,我使用HTTP Basic执行用户身份验证,并希望能够在用户错误键入密码时向用户发送身份验证失败的消息。 不幸的是,产生的错误似乎并不表示实际收到了HTTP状态代码409: 此外,在发生错误时检索HTTP正文会很好,因为我的服务器端将在那里放置错误的文本描述。 问题 是否可以
有没有办法获取HTTP状态码(比如200400…)在观察实时数据之前? 这是我的实现: 后果 基本存储库 我的存储库 视图模型 在我的代码中,我执行以下操作: 在哪里可以查看状态代码?我不知道在哪里实现状态码返回。
在Axios文档中: 我们知道我们可以在
这可能看起来很愚蠢,但是我试图在Axios中请求失败时获取错误数据。 是否可以获取一个可能包含状态代码和内容的对象,而不是字符串?例如:
如何从的结果中获取HTTP状态?