【发布时间】:2014-07-22 16:44:36
【问题描述】:
在 Android 中,我想使用新的 OkHttp 2.0 来请求一些 URL,但我想更多地控制重定向。我已经找到了启用或禁用遵循 HTTPS → HTTP 或 HTTP → HTTPS 重定向的选项,但我不想遵循任何重定向,因此我可以尽快更新我的 GUI,并选择是否遵循它们应用逻辑。我没有看到这样做的选项。有可能吗,如果可以,我该如何实现?
【问题讨论】:
在 Android 中,我想使用新的 OkHttp 2.0 来请求一些 URL,但我想更多地控制重定向。我已经找到了启用或禁用遵循 HTTPS → HTTP 或 HTTP → HTTPS 重定向的选项,但我不想遵循任何重定向,因此我可以尽快更新我的 GUI,并选择是否遵循它们应用逻辑。我没有看到这样做的选项。有可能吗,如果可以,我该如何实现?
【问题讨论】:
是的,在 2.3.0 版中是可能的
final OkHttpClient client = new OkHttpClient();
client.setFollowRedirects(false);
对于 3.x
OkHttpClient client = new OkHttpClient().newBuilder()
.followRedirects(false)
.followSslRedirects(false)
.build();
【讨论】:
3.x怎么办?
这似乎是不可能的,但它应该会进入下一个版本,至少根据related issue on Github 上的这些 cmets 中的一些。
编辑:看起来可以通过 OkUrlFactory 实现,它是 okhttp-urlconnection 子模块的一部分(仍然没有弄清楚它的实际目的,但它看起来像是 Http(s)UrlConnection 的替代品)。
编辑 2:实际上,等等;它看起来像it is implemented on master。但是,它似乎也没有出现在 2.0.0 版本快照中。
【讨论】:
试试
client.setFollowRedirects(true|false);
或者,如果使用 HTTPUrlConnection 模块:
HTTPUrlConnection.setFollowRedirects(true|false);
【讨论】: