OkHttp我在服务器上运行的应用程序中使用,并且服务器在操作系统级别配置了多个网络接口。
我如何控制 OkHttp 将使用哪个网络接口来发送新请求?
默认情况下,我看到它只是选择可用的接口之一,因为我希望为构建在 OkHttp 之上的应用程序的用户提供配置应使用的接口的能力。
我相信你可以使用
public OkHttpClient.Builder socketFactory(SocketFactory socketFactory)
Run Code Online (Sandbox Code Playgroud)
设置用于创建连接的套接字工厂。OkHttp 仅使用无参数 createSocket() 方法来创建未连接的套接字。例如,重写此方法允许将套接字绑定到特定的本地地址。如果未设置,将使用系统范围的默认套接字工厂。
class InterfaceSocketFactory(private val localAddress: InetAddress) : SocketFactory() {
private val systemFactory = getDefault()
override fun createSocket(): Socket {
val s = systemFactory.createSocket()
s.bind(InetSocketAddress(localAddress, 0))
return s
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1771 次 |
| 最近记录: |