Android Lollipop Network API和OkHttp

时间:2015-12-07 17:32:32

标签: android android-5.0-lollipop okhttp android-networking

我遇到了使用OkHttp路由网络呼叫的问题。我正在尝试使用无法访问互联网的接入点将HTTP请求发送到本地设备(通过设备的IP)。由于Android 5.0中的一些更改,OkHttp将尝试通过数据路由请求,然后失败。

在Android 5.0的网络API中,我可以使用NetworkCapabilities类和NetworkRequest.Builder来告诉请求只能通过Wi-Fi,但是,我已经在使用OkHttp,我不想彻底检查我的代码。无论如何用OkHttp做类似的事情?

2 个答案:

答案 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