请求https 的学习例子之一( httpUrlconn)
来源:互联网 发布:centos jira mysql 编辑:程序博客网 时间:2024/06/14 23:26
配置证书相关信息
.package com.example.qundui.learndemo.netutils;
/**
* Created by qundui on 2017/4/24.
*/
import android.annotation.SuppressLint;
import com.example.qundui.learndemo.Myapp;
import java.io.InputStream;
import java.security.KeyStore;
import java.security.SecureRandom;
import java.security.cert.Certificate;
import java.security.cert.CertificateException;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.TrustManagerFactory;
import javax.net.ssl.X509TrustManager;
public class SSLContextUtil {
/** * 拿到https证书, SSLContext 。 */@SuppressLint("TrulyRandom")public static SSLContext getSSLContext() { SSLContext sslContext = null; try { sslContext = SSLContext.getInstance("TLS"); InputStream inputStream = Myapp.getInstance().getAssets().open( "srca.cer"); CertificateFactory cerFactory = CertificateFactory.getInstance("X.509"); Certificate cer = cerFactory.generateCertificate(inputStream); KeyStore keyStore = KeyStore.getInstance("PKCS12"); keyStore.load(null, null); keyStore.setCertificateEntry("trust", cer); KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); keyManagerFactory.init(keyStore, null); TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); trustManagerFactory.init(keyStore); sslContext.init(keyManagerFactory.getKeyManagers(), trustManagerFactory.getTrustManagers(), new SecureRandom()); } catch (Exception e) { e.printStackTrace(); } return sslContext;}/** * 如果不需要https证书 */public static SSLContext getDefaultSLLContext() { SSLContext sslContext = null; try { sslContext = SSLContext.getInstance("TLS"); sslContext.init(null, new TrustManager[]{trustManagers}, new SecureRandom()); } catch (Exception e) { e.printStackTrace(); } return sslContext;}private static TrustManager trustManagers = 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[0]; }};public static final HostnameVerifier HOSTNAME_VERIFIER = new HostnameVerifier() { public boolean verify(String hostname, SSLSession session) { return true; }};
}
请求操作
private void getData(String url1) {
try { URL url = new URL(url1); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("GET");
// 设置SSLSocketFoactory,这里有两种:1.需要安全证书 2.不需要安全证书(绕过证书)
if (urlConnection instanceof HttpsURLConnection) { // 是Https请求
SSLContext sslContext = SSLContextUtil.getSSLContext();
if (sslContext != null) {
SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
((HttpsURLConnection) urlConnection).setSSLSocketFactory(sslSocketFactory);
}
}
urlConnection.setConnectTimeout(8 * 1000);
urlConnection.setReadTimeout(8 * 1000);
int responseCode = urlConnection.getResponseCode();
if (responseCode == 200) { // 请求成功
InputStream inputStream = urlConnection.getInputStream();
Log.i(“gsc”,”—-“+StringTools.StringtoInpustream(inputStream));
inputStream.close();
}
urlConnection.disconnect();
}catch (Exception e){ }}
- 请求https 的学习例子之一( httpUrlconn)
- iOS9后https不能请求问题解决的办法之一
- JMeter学习(三十六)发送HTTPS请求
- angularjs学习笔记之一(ajax请求)
- 验证 HTTPS 请求的证书(五)
- 验证 HTTPS 请求的证书(五)
- 验证 HTTPS 请求的证书(五)
- java Https的请求
- Volley的Https请求
- Volley的Https请求
- HTTPS请求(三)
- curl学习(二):获取http和https请求
- GMF学习之一tianPan例子
- cookie&session学习之一--从一个形象的例子说起(zl)
- 学习O/RM,从最简单的例子开始...之一
- nodeJs学习过程之一个图片上传显示的例子
- https请求和http请求的转换
- 网站的Http请求转为Https请求
- 线程分享
- Unreal Engin_画廊制作笔记 _006<灯光处理,静态灯光的设置>
- Java Web的数据库操作
- Redis系列(6)——RedisTemplate操作模板
- 8086汇编学习之代码段、数据段、栈段与段地址寄存器
- 请求https 的学习例子之一( httpUrlconn)
- JavaBean中布尔类型使用注意
- 使用Twemproxy搭建redis服务器集群
- 随机抽样一致算法(Random sample consensus,RANSAC)
- Android界面性能调优
- 2017-4-26阿里客户端笔试题1
- Scala 学习(五)--- 练习
- poj 3292 艾氏筛法的变型
- u-boot IXDP425 20090627