如何使用Retrofit / OkHttp更快地发出并发请求?

时间:2017-01-31 14:44:32

标签: java android http retrofit okhttp3

我需要在Android中使用Retrofit尽可能快地发出50个http GET请求。我正在使用OkHttp进行Retrofit。目前,对于普通Java ThreadPoolExecutorHttpUrlConnection,Retrofit做得很差:对于所有50个请求,Retrofit大约需要50秒,普通HttpUrlConnection需要30秒,如果我为{{设置了池大小20 1}}和Retrofit / OkHttp我设置了ThreadPoolExecutor

如果我查看logcat,我可以看到Retrofit最多会执行5个并发请求,无论我在okHttpClient.dispatcher().setMaxRequests(20);中设置什么,而setMaxRequests()存在与可用工作线程一样多的并发请求

我能做些什么来让Retrofit更快?我不想切换到ThreadPoolExecutor,因为Retrofit非常优雅且易于使用。

编辑1

我尝试向OkHttp提供自定义HttpUrlConnection,但没有时间改进:

ThreadPoolExecutor

编辑2

如果这很重要,我会向同一个端点发出所有请求

1 个答案:

答案 0 :(得分:8)

由于他们都去了同一个主机,你试过了吗?

okHttpClient.dispatcher().setMaxRequestsPerHost(20);

Dispatcher.setMaxRequestsPerHost