tencent cloud

文档反馈

OkHttp 接入

最后更新时间:2023-06-12 15:00:34

    OkHttp

    OkHttp 提供了 DNS 接口,用于向 OkHttp 注入 DNS 实现。得益于 OkHttp 的良好设计,使用 OkHttp 进行网络访问时,实现 DNS 接口即可接入 HTTPDNS 进行域名解析,在较复杂场景(HTTP/HTTPS/WebSocket + SNI)下也不需要做额外处理,侵入性极小。示例如下:
    mOkHttpClient =
    new OkHttpClient.Builder()
    .dns(new Dns() {
    @NonNull
    @Override
    public List<InetAddress> lookup(String hostname) {
    Utils.checkNotNull(hostname, "hostname can not be null");
    String ips = MSDKDnsResolver.getInstance().getAddrByName(hostname);
    String[] ipArr = ips.split(";");
    if (0 == ipArr.length) {
    return Collections.emptyList();
    }
    List<InetAddress> inetAddressList = new ArrayList<>(ipArr.length);
    for (String ip : ipArr) {
    if ("0".equals(ip)) {
    continue;
    }
    try {
    InetAddress inetAddress = InetAddress.getByName(ip);
    inetAddressList.add(inetAddress);
    } catch (UnknownHostException ignored) {
    }
    }
    return inetAddressList;
    }
    })
    .build();
    注意
    实现 DNS 接口,即表示所有经由当前 OkHttpClient 实例处理的网络请求都会经过 HTTPDNS。如果您只有少部分域名是需要通过 HTTPDNS 进行解析,建议您在调用 HTTPDNS 域名解析接口之前先进行过滤。

    Retrofit + OkHttp

    Retrofit 实际上是一个基于 OkHttp,对接口做了一层封装桥接的 lib。因此只需要仿 OkHttp 的接入方式,定制 Retrofit 中的 OkHttpClient,即可方便地接入 HTTPDNS。示例如下:
    mRetrofit =
    new Retrofit.Builder()
    .client(mOkHttpClient)
    .baseUrl(baseUrl)
    .build();
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持