在android2.1如何实现对ssl的无证书访问
来源:互联网 发布:五毒萝莉捏脸数据截图 编辑:程序博客网 时间:2024/05/16 05:05
public String connentUrl(String strUrl) {
StringBuffer sbResult = null;
try {
HttpURLConnection http = null;
URL url = new URL(strUrl);
// 判断是http请求还是https请求
if (url.getProtocol().toLowerCase().equals("https")) {
trustAllHosts();
HttpsURLConnection https = (HttpsURLConnection) url.openConnection();
https.setHostnameVerifier(DO_NOT_VERIFY);
http = https;
} else {
http = (HttpURLConnection) url.openConnection();
}
http.setDoInput(true);
// 设置超时时间
http.setConnectTimeout(10000);
// 设置请求类型为post
http.setRequestMethod("POST");
// 设置接收类型
http.setRequestProperty("accept", "*/*");
int resCode = http.getResponseCode();
http.connect();
// response返回的数字是200代表请求成功
if (resCode == 200) {
InputStream input = http.getInputStream();
BufferedReader data = new BufferedReader(new InputStreamReader(
input, HTTP.UTF_8));
String strLine = "";
// 从返回结果中取值
while ((strLine = data.readLine()) != null) {
if (null == sbResult) {
sbResult = new StringBuffer();
}
sbResult.append(strLine);
}
input.close();
http.disconnect();
} catch (Exception ex) {
}
return sbResult.toString();
}
final static HostnameVerifier DO_NOT_VERIFY = new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true;
}
};
/**
* 信任所有主机-对于任何证书都不做检查
*/
private static void trustAllHosts() {
// Create a trust manager that does not validate certificate chains
// Android 采用X509的证书信息机制
TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return new java.security.cert.X509Certificate[] {};
}
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {}
public void checkServerTrusted(X509Certificate[] chain,String authType) throws CertificateException {}
}
};
// Install the all-trusting trust manager
try {
SSLContext sc = SSLContext.getInstance("TLS");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
} catch (Exception e) {
e.printStackTrace();
}
}
StringBuffer sbResult = null;
try {
HttpURLConnection http = null;
URL url = new URL(strUrl);
// 判断是http请求还是https请求
if (url.getProtocol().toLowerCase().equals("https")) {
trustAllHosts();
HttpsURLConnection https = (HttpsURLConnection) url.openConnection();
https.setHostnameVerifier(DO_NOT_VERIFY);
http = https;
} else {
http = (HttpURLConnection) url.openConnection();
}
http.setDoInput(true);
// 设置超时时间
http.setConnectTimeout(10000);
// 设置请求类型为post
http.setRequestMethod("POST");
// 设置接收类型
http.setRequestProperty("accept", "*/*");
int resCode = http.getResponseCode();
http.connect();
// response返回的数字是200代表请求成功
if (resCode == 200) {
InputStream input = http.getInputStream();
BufferedReader data = new BufferedReader(new InputStreamReader(
input, HTTP.UTF_8));
String strLine = "";
// 从返回结果中取值
while ((strLine = data.readLine()) != null) {
if (null == sbResult) {
sbResult = new StringBuffer();
}
sbResult.append(strLine);
}
input.close();
http.disconnect();
} catch (Exception ex) {
}
return sbResult.toString();
}
final static HostnameVerifier DO_NOT_VERIFY = new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true;
}
};
/**
* 信任所有主机-对于任何证书都不做检查
*/
private static void trustAllHosts() {
// Create a trust manager that does not validate certificate chains
// Android 采用X509的证书信息机制
TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return new java.security.cert.X509Certificate[] {};
}
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {}
public void checkServerTrusted(X509Certificate[] chain,String authType) throws CertificateException {}
}
};
// Install the all-trusting trust manager
try {
SSLContext sc = SSLContext.getInstance("TLS");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
} catch (Exception e) {
e.printStackTrace();
}
}
- 在android2.1如何实现对ssl的无证书访问
- WebSphere 如何添加其他系统管理的证书,访问ssl系统
- HttpClient如何访问需要提交客户端证书的SSL服务
- 申请免费的腾讯云SSL证书,实现https访问
- Tomcat 配置阿里的ssl安全证书,实现https访问
- 如何解决更新证书、或者创建SSL证书的时候显示“无法生成证书请求,拒绝访问”等提示信息
- 如何添加SSL证书实现https请求
- 对百度百科SSL证书的解读
- WDCP上配置SSL证书即https 2017-08-28 百度总结 操作环境:linux的WDCP操作面板(没有操作面板就在命令行操作) wdcp 安装ssl证书教程实现https访问 1.申请
- Java用HttpsURLConnection访问https网站的时候如何跳过SSL证书的验证?
- 用WebView访问证书有问题的SSL网页以及在文件关联窗口中选择浏览器后,浏览器如何识别到该连接地址
- 如何选择国际标准的SSL证书?
- 如何更安全的部署SSL证书
- 如何获取自己的SSL证书
- 如何找到的路径SSL证书文件?
- Nginx配置SSL证书实现访问HTTPS网站
- nginx配置ssl证书实现https和http共存访问
- LNMP环境配置SSL证书实现https访问
- <input type="file">中怎设置按钮的样式
- Mercurial的Linux客户端配置
- Contentprovider学习
- MFC 对话框上打字
- Java中的枚举
- 在android2.1如何实现对ssl的无证书访问
- 骨传导耳机
- Android处理图片OOM的若干方法小结
- vfork()的若干问题
- /bin/basename is needed by jdk
- 显示验证码时,错觉的firefox保存:误以为验证码保存的是当前显示的,其实是重新请求再转存文件.
- 关于谷歌眼镜的几点常见问题
- OnFocusChangeListener监听没反应
- Powershell: Get Content Faster with ReadCount!