我在应用程序中使用特定的身份验证机制。 要登录应用程序,请将登录请求发送到特定的URL / login /,并获取存储在cookie中的会话令牌。
任何时候令牌都可以被服务器无效,其他请求将导致401.我希望HttpClient自动检测401错误,重做/登录/请求一次并自动重试原始请求。
我已经尝试在HttpClients.custom()。setRetryHandler中设置HttpRequestRetryHandler,但它似乎无法处理401错误。
执行所请求功能的最佳方式是什么?
答案 0 :(得分:1)
您可以根据需要使用OkHttpClient。它实现了你想要的。
处理身份验证。
OkHttp can automatically retry unauthenticated requests. When a response is 401 Not Authorized, an Authenticator is asked to supply credentials. Implementations should build a new request that includes the missing credentials. If no credentials are available, return null to skip the retry.
您可以阅读有关库here的更多信息。
答案 1 :(得分:0)
显然最简单的方法是在HttpClient上编写一个代理类来捕获"执行"方法结果,如果需要Auth,则执行自定义请求并使用原始参数重新调用原始方法。