我正在使用OkHttp
构建类似代理的应用程序。此应用程序需要将不同的请求转发给不同的代理。
我在OkHttp中找不到任何api来为一个请求设置代理,
并且ProxySelector
无法解决我的问题,因为为请求选择代理不仅取决于请求的主机。
答案 0 :(得分:2)
您可以保留一个OkHttpClients池,每个代理需要连接一个代理。当您需要通过代理发出请求时,您可以获取OkHttpClient设置以使用该代理并使用它来发出请求(如有必要,可以创建客户端)。
根据您需要连接的代理数量,您可能还希望清除不常用的客户端以节省内存。
答案 1 :(得分:2)
如果您使用okhttpClient.newBuilder()
从另一个客户端创建一个客户端,那么每个客户端都将非常轻量级。例如,它们将共享相同的连接池和调度程序。请参阅OkHttpClient’s docs on sharing。