okhttp https ip直连设置Host

最近希望提高App访问API的速度,于是采用IP直连的方式,因为我用的库是okhttp,如果直接请求IP地址可能会报错:

javax/net/ssl/SSLProtocolException: SSL handshake aborted: ssl=0x7f206dd280: Failure in SSL library, usually a protocol error
    error:10000410:SSL routines:OPENSSL_internal:SSLV3_ALERT_HANDSHAKE_FAILURE (external/boringssl/src/ssl/tls_record.c:504 0x7f25b26bc0:0x00000001)

跟后端程序员讨论了一下,他们如下说:
需要我在host里配置我的域名,用这个域名去和ip做校验,通过的话,才可以正常请求。
但是这样如何在okhttp里体现呢,下面直接上相应的代码:

OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
Interceptor headers = new Interceptor() {
     @Override
     public Response intercept(Chain chain) throws IOException {
         Request original = chain.request();
         HttpUrl newUrl = original.url().newBuilder().host(我的域名).build();
         Request completeRequest = original.newBuilder()
                 .url(newUrl)
                 .build();
         Request.Builder requestBuilder = completeRequest.newBuilder();
         Request request = requestBuilder.build();
         return chain.proceed(request);
     }
 };
httpClient.interceptors().add(headers);

这一次再去请求,发现校验已经通过了,可以正常拉下来数据了。
可能大家在ip直连的时候也会遇到类似的问题,在这里我贴出自己okhttp的相关代码,希望能有帮助。
(补充:这种方法可能有问题,所以请大家觉得不对的直接在这里向我提出,我会做出适当的修改,谢谢~)

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值