android https握手失败,android - 使用okHttp握手失败,但使用HttpURLConnection工作 - 堆栈内存溢出...

这是广泛用作解决方法的不安全的OkHttpClient。

不要在生产中使用它,仅用于开发目的。

import java.security.SecureRandom;

import java.security.cert.CertificateException;

import java.security.cert.X509Certificate;

import javax.net.ssl.HostnameVerifier;

import javax.net.ssl.SSLContext;

import javax.net.ssl.SSLSession;

import javax.net.ssl.SSLSocketFactory;

import javax.net.ssl.TrustManager;

import javax.net.ssl.X509TrustManager;

import okhttp3.OkHttpClient;

public class Http {

private final static String SSL = "SSL";

private static OkHttpClient InsecureHttpClient;

public static OkHttpClient client () {

if (InsecureHttpClient == null) {

try {

InsecureHttpClient = insecureOkHttpClient ();

} catch (Exception e) {

e.printStackTrace ();

}

}

return InsecureHttpClient;

}

private static OkHttpClient insecureOkHttpClient () throws Exception {

TrustManager [] trustAllCerts = new TrustManager [] { trustManager () };

SSLContext sslContext = SSLContext.getInstance (SSL);

sslContext.init (null, trustAllCerts, new SecureRandom ());

SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory ();

OkHttpClient.Builder builder = new OkHttpClient.Builder ();

builder.sslSocketFactory (sslSocketFactory, (X509TrustManager)trustAllCerts [0]);

builder.hostnameVerifier (hostnameVerifier ());

return builder.build ();

}

private static TrustManager trustManager () {

return new X509TrustManager () {

@Override

public void checkClientTrusted (X509Certificate [] chain, String authType) throws CertificateException { }

@Override

public void checkServerTrusted (X509Certificate[] chain, String authType) throws CertificateException { }

@Override

public X509Certificate [] getAcceptedIssuers () {

return new X509Certificate [] { };

}

};

}

private static HostnameVerifier hostnameVerifier () {

return new HostnameVerifier () {

@Override

public boolean verify (String hostname, SSLSession session) {

return true;

}

};

}

}

然后,您显然可以像上述测试代码一样使用上述客户端:(顺便说一下,它可以与您的网址一起使用)

final Request request = new Request.Builder ()

.url ("https://bits-bosm.org/2017/registrations/signup/")

.get ()

.addHeader ("Accept", "text/html")

.build ();

final OkHttpClient httpClient = Http.client ();

new Thread (new Runnable () {

@Override

public void run () {

try {

Response response = httpClient.newCall (request).execute ();

Logger.error (MainActivity.class.getSimpleName () + " --> Http Response", response.body ().string ());

} catch (IOException e) {

e.printStackTrace ();

}

}

}).start ();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值