Retrofit @get request sometimes它需要很长的时间来得到答案(10-15秒)。我只得到字符串数据。平均1-2 kb。
当我从 Postman 发送请求时没有问题
你觉得问题出在哪里?
改造服务类;
private val okHttpClient = OkHttpClient().newBuilder()
.connectTimeout(20, TimeUnit.SECONDS)
.readTimeout(20, TimeUnit.SECONDS)
.writeTimeout(20, TimeUnit.SECONDS)
.build()
private val call = Retrofit.Builder()
.baseUrl(Constants.LINK)
.client(okHttpClient)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava3CallAdapterFactory.create())
.build().create(ApiEndpointRXJava::class.java)
fun getRetrofit(query: String, auth: String, queryList: List<String>): Single<List<ListModel>> {
return call.getRetrofit(query, auth, queryList)
}
接口;**
@GET(".../.../...")
fun getRetrofit(
@Query("query") query: String,
@Header("Authorization") authorization: String,
@Query("queryList") queryList: List<String>
): Single<List<ListModel>>
视图模型.类;
fun getRetrofit(query: String, auth: String, queryList: List<String>) {
errorData.value = false
disposable.add(
retrofit
.getRetrofit(query, auth, queryList)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(object : DisposableSingleObserver<List<ListModel>>() {
override fun onSuccess(t: List<ListModel>) {
v.value = t
}
override fun onError(e: Throwable) {
e.value = true
}
})
)
}
1条答案
按热度按时间bnlyeluc1#
如果它有时工作得很快有时有延迟-看起来问题不在你的代码库中。可能是服务器端或网络连接的问题。要检查这种情况,你可以使用Fiddler或Charles来嗅探你的应用程序流量。如果嗅探程序的响应时间相同,那么问题与你的代码库无关。