https的认证
来源:互联网 发布:淘宝客用户主页怎么填 编辑:程序博客网 时间:2024/05/21 04:26
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// loadData();
cardData();
}
/**
* 带证书验证
*/
private void cardData() {
FormBody formbody = new FormBody.Builder().add("mobile", "18612991023").add("password", "111111").build();
Request request = new Request.Builder().url("https://120.27.23.105/user/login").post(formbody).build();
setCard().newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
}
});
}
/**
* 信任所有https的请求:第一种实现
*/
private void loadData() {
OkHttpClient httpClient =
new OkHttpClient.Builder()
.addInterceptor(new LogInterceptor())
.sslSocketFactory(createSSLSocketFactory())
.hostnameVerifier(new TrustAllHostnameVerifier())
.connectTimeout(10, TimeUnit.SECONDS)
.readTimeout(10, TimeUnit.SECONDS)
.writeTimeout(10, TimeUnit.SECONDS)
.retryOnConnectionFailure(false)
.build();
FormBody formbody = new FormBody.Builder().add("mobile", "18612991023").add("password", "111111").build();
Request request = new Request.Builder().url("https://120.27.23.105/user/login").post(formbody).build();
httpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
}
});
}
private static class TrustAllCerts implements 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[0];
}
}
private static class TrustAllHostnameVerifier implements HostnameVerifier {
@Override
public boolean verify(String hostname, SSLSession session) {
return true;
}
}
private static SSLSocketFactory createSSLSocketFactory() {
SSLSocketFactory ssfFactory = null;
try {
SSLContext sc = SSLContext.getInstance("TLS");
sc.init(null, new TrustManager[]{new TrustAllCerts()}, new SecureRandom());
ssfFactory = sc.getSocketFactory();
} catch (Exception e) {
}
return ssfFactory;
}
/**
* app带证书验证
* @return
*/
public OkHttpClient setCard() {
OkHttpClient.Builder builder = new OkHttpClient.Builder();
try {
CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
keyStore.load(null);
String certificateAlias = Integer.toString(0);
keyStore.setCertificateEntry(certificateAlias, certificateFactory.generateCertificate(getAssets().open("kson_server.cer")));//拷贝好的证书
SSLContext sslContext = SSLContext.getInstance("TLS");
final TrustManagerFactory trustManagerFactory =
TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
trustManagerFactory.init(keyStore);
sslContext.init
(
null,
trustManagerFactory.getTrustManagers(),
new SecureRandom()
);
builder.sslSocketFactory(sslContext.getSocketFactory());
builder.addInterceptor(new LogInterceptor());
builder.hostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String s, SSLSession sslSession) {
return true;
}
});
} catch (Exception e) {
e.printStackTrace();
}
return builder.build();
}
}
阅读全文
0 0
- https的双向认证
- https的认证
- HTTPS双向认证、UIWebView的双向认证
- HTTPS的SSL双向认证
- https双向认证的问题
- Https的认证证书简介
- https认证
- https认证
- Aandroid中https请求的单向认证和双向认证
- android中https请求的单向认证和双向认证
- C#中实现https的双向认证
- Android上面HTTPS的SSL连接认证
- 调用https双向认证的webservice
- 基于java的https双向认证(android)
- AFNetworking 中 设置 https的SSL认证
- AFNetworking 中 设置 https的SSL认证
- Java https服务器认证问题的解决方法
- https HttpsURLConnection请求的单向认证
- [设计模式]4. Abstract Factory
- Spring mvc 前端表单传递来的数据被后台的两个entity的相同名字的属性谁获取的问题
- POJ 1185 炮兵阵地 (状态压缩DP)
- Struts 2学习(二)
- 莫烦大大TensorFlow视频学习笔记
- https的认证
- 数据结构与算法C++描述(12)---堆及最大堆
- ArcEngine 几何数据检查与修复
- Redis 列表(List)
- 文本框值变动时触发事件
- 页面布局 --- 两列自适应布局
- vi命令学习
- vue学习第12天,
- sigslot