我遇到了使用OkHttp路由网络呼叫的问题。我正在尝试使用无法访问互联网的接入点将HTTP请求发送到本地设备(通过设备的IP)。由于Android 5.0中的一些更改,OkHttp将尝试通过数据路由请求,然后失败。
在Android 5.0的网络API中,我可以使用NetworkCapabilities
类和NetworkRequest.Builder
来告诉请求只能通过Wi-Fi,但是,我已经在使用OkHttp,我不想彻底检查我的代码。无论如何用OkHttp做类似的事情?
答案 0 :(得分:1)
我想出了一个解决方法:
final Network currentNetwork = (Network) network;
newClientBuilder.socketFactory(((Network)network).getSocketFactory())
.dns(new Dns() {
@Override
public List<InetAddress> lookup(String hostname) throws UnknownHostException {
return Arrays.asList(currentNetwork.getAllByName(hostname));
}
});
答案 1 :(得分:0)
我们希望最终在OkHttp中直接包含此类功能,您可能是第一个测试的志愿者/受害者。您可能想要做的是使用OkHttp 2.6的新Dns
界面来调用您选择的网络。如果可以,无论如何IP地址都会导致OkHttp做正确的事情,或者 还需要替换SocketFactory
。