当前位置: 首页 > 知识库问答 >
问题:

如何使用OKHTTP/Retrifit重试HTTP请求?

狄宇
2023-03-14

目前,我正在捕捉异常并重新尝试维护一个计数器变量。

共有1个答案

郤浩慨
2023-03-14

我不知道这是否适合您,但您可以将RxJava与改型一起使用。

改型能够在rest调用时返回可观察到的内容。在Oberservables上,只要调用retry(count)就可以在Observable发出错误时重新订阅它。

您必须在接口中定义调用,如下所示:

@GET("/data.json")
Observable<DataResponse> fetchSomeData();
restApi.fetchSomeData()
.retry(5)  // Retry the call 5 times if it errors
.subscribeOn(Schedulers.io())  // execute the call asynchronously
.observeOn(AndroidSchedulers.mainThread())  // handle the results in the ui thread
.subscribe(onComplete, onError); 
// onComplete and onError are of type Action1<DataResponse>, Action1<Throwable>
// Here you can define what to do with the results
 类似资料:
  • 问题内容: 我需要能够 使用 OKHTTP* 来 管理 一些请求,使用来通过输入地址来接收一些预测。该 问题是 ,我插入每次 CHAR 它将使一个新的请求,但在同一时间,我需要取消前一个!例如:纽约市=同时请求13个!因此,我仅使用一个实例来尝试取消已请求但没有成功的任何内容。这就是我所做的! * 我检查对象是否为null并取消请求,但仍然不断! 问题答案: 关于以下内容:

  • 我阅读了一些将jsons发布到服务器的示例。 有人说: OkHttp是Java提供的HttpUrlConnection接口的实现。它提供了一个用于写入内容的输入流,而不知道(或关心)该内容是什么格式。 现在我想用name和password参数对URL做一个普通的post。 这意味着我需要自己将名称和值对编码成流?

  • 问题内容: 我读了一些将jsons发布到服务器的示例。 有人说: OkHttp是Java提供的HttpUrlConnection接口的实现。它提供用于编写​​内容的输入流,并且不知道(或不在乎)内容的格式。 现在,我想用名称和密码的参数对URL进行常规发布。 这意味着我需要自己将名称和值对编码为流? 问题答案: 当前接受的答案已过期。现在,如果您想创建一个发布请求并向其中添加参数,则应该使用Mul

  • 如何在基于网络的 HTTP 客户端中重试 HTTP 请求? 请考虑以下处理程序,如果收到 HTTP 响应代码 503,它将尝试在 1 秒后重试 HTTP 请求: 在本例中,当我写入通道时,管道中的其他处理程序会看到HttpObjects,但实际上不会再次执行HttpRequest——只接收到一个HttpResponse。 我认为在这种情况下我只是滥用了 Channel,我需要创建一个新的通道(表示

  • 我需要使50 http获取请求尽快与Android的改型。我正在使用OKHTTP的改型。目前,与普通Java和相比,Retrofit的工作做得很差:对于所有50个请求,如果我为设置池大小20,则为Retrofit设置50sec,为普通设置30sec,而为Retrofit/OkHttp设置。 如果查看logcat,我可以看到无论在中设置了什么,registfit最多执行5个并发请求,而在中,并发请求

  • OKHTTP在某种程度上支持并发请求API吗? 如果没有,最好的实现方法是什么?