如何在OkHttp中为每个请求设置代理?

时间:2017-03-22 15:08:45

标签: java httpclient okhttp okhttp3

我正在使用OkHttp构建类似代理的应用程序。此应用程序需要将不同的请求转发给不同的代理。

我在OkHttp中找不到任何api来为一个请求设置代理, 并且ProxySelector无法解决我的问题,因为为请求选择代理不仅取决于请求的主机。

2 个答案:

答案 0 :(得分:2)

您可以保留一个OkHttpClients池,每个代理需要连接一个代理。当您需要通过代理发出请求时,您可以获取OkHttpClient设置以使用该代理并使用它来发出请求(如有必要,可以创建客户端)。

根据您需要连接的代理数量,您可能还希望清除不常用的客户端以节省内存。

答案 1 :(得分:2)

如果您使用okhttpClient.newBuilder()从另一个客户端创建一个客户端,那么每个客户端都将非常轻量级。例如,它们将共享相同的连接池和调度程序。请参阅OkHttpClient’s docs on sharing