在构建适配器时,我正在使用我的Android应用程序中的http调用和retrofit.client.UrlConnectionClient作为客户端进行改造。
RestAdapter.Builder builder = new RestAdapter.Builder()
.setEndpoint(url)
.setLogLevel(RestAdapter.LogLevel.FULL)
.setClient(
new Client.Provider() {
public Client get() {
return new UrlConnectionClient() {
@Override
protected HttpURLConnection openConnection(Request request)
throws IOException {
HttpURLConnection connection = super.openConnection(request);
connection.setConnectTimeout(connectionTimeout);
return connection;
}
我想设置超时,所以我使用了UrlConnectionClient作为我的客户端。我找不到像OkHttp这样的其他客户的方式。
问题是:如何取消正在进行的请求?。
我看过类似的帖子@ Using Square's Retrofit Client, is it possible to cancel an in progress request? If so how?但是如果我尝试添加自己的执行程序并尝试使用它来取消请求,我的代码会变得非常复杂。我正在研究现有代码是否有更好的方法。
我也看到Retorofit V2.0计划重试和取消,但不确定何时会发布.. https://github.com/square/retrofit/issues/297
需要帮助! 实际上我还需要一种方法来重试相同的代码。
答案 0 :(得分:3)
自2.0.0-beta2(https://github.com/square/retrofit/releases/tag/parent-2.0.0-beta2)开始提供此功能。我不知道是否有一个文档解释了这一点,但这里是API的链接:
http://square.github.io/retrofit/2.x/retrofit/retrofit/Call.html#cancel--
'Call'API允许通过'克隆'请求来进行重试。