android中出现javax.net.ssl.SSLPeerUnverifiedException
在编写云笔记时需要调用auth2.0协议,在调用是老出现javax.net.ssl.SSLPeerUnverifiedException: No peer certificate的错误,根据有关资料解决如下:
1、编写SSLSocketFactoryEx,以代替原有的SSLSocketFactory,代码如下:
package com.nbcio.baishicha.yunbiji;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import java.security.KeyManagementException;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.UnrecoverableKeyException;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import org.apache.http.conn.ssl.SSLSocketFactory;
public class SSLSocketFactoryEx extends SSLSocketFactory {
SSLContext sslContext = SSLContext.getInstance("TLS");
public SSLSocketFactoryEx(KeyStore truststore)
throws NoSuchAlgorithmException, KeyManagementException,
KeyStoreException, UnrecoverableKeyException {
super(truststore);
TrustManager tm = new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
@Override
public void checkClientTrusted(
java.security.cert.X509Certificate[] chain, String authType)
throws java.security.cert.CertificateException {
}
@Override
public void checkServerTrusted(
java.security.cert.X509Certificate[] chain, String authType)
throws java.security.cert.CertificateException {
}
};
sslContext.init(null, new TrustManager[] { tm }, null);
}
@Override
public Socket createSocket(Socket socket, String host, int port,
boolean autoClose) throws IOException, UnknownHostException {
return sslContext.getSocketFactory().createSocket(socket, host, port,
autoClose);
}
@Override
public Socket createSocket() throws IOException {
return sslContext.getSocketFactory().createSocket();
}
}
2、编写新的HttpClient getNewHttpClient来代替原有的DefaultHttpClient,代码如下:
public static HttpClient getNewHttpClient() {
try {
KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
trustStore.load(null, null);
SSLSocketFactory sf = new SSLSocketFactoryEx(trustStore);
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
HttpParams params = new BasicHttpParams();
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);
SchemeRegistry registry = new SchemeRegistry();
registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
registry.register(new Scheme("https", sf, 443));
ClientConnectionManager ccm = new ThreadSafeClientConnManager(params, registry);
return new DefaultHttpClient(ccm, params);
} catch (Exception e) {
return new DefaultHttpClient();
}
}
3、在postRequest调用的时候如下方式就可以:
HttpResponse httpResponse = (HttpResponse) getNewHttpClient().execute(postMethod);
android中出现javax.net.ssl.SSLPeerUnverifiedException相关推荐
- android中出现javax.net.ssl.SSLPeerUnverifiedException的解决方案
javax.net.ssl.SSLPeerUnverifiedException: No peer certificate的错误,根据有关资料解决如下: 1.编写SSLSocketFactoryEx, ...
- Android之javax.net.ssl.SSLPeerUnverifiedException: Hostname ip not verified:解决办法
1.问题 用HttpURLConnection去请求的时候抛了下面的异常 HttpRequest$HttpRequestException: javax.net.ssl.SSLPeerUnverifi ...
- javax.net.ssl.SSLPeerUnverifiedException: Hostname 10.1.82.151 not verified android怎么信任证书...
javax.net.ssl.SSLPeerUnverifiedException: Hostname 10.1.82.151 not verified 意味着客户端无法验证服务器的主机名.这通常是因为 ...
- javax.net.ssl.SSLPeerUnverifiedException: Hostname 10.1.82.151 not verified:
"javax.net.ssl.SSLPeerUnverifiedException: Hostname 10.1.82.151 not verified" 意味着在建立 SSL/T ...
- 避免HttpClient的”javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated”异常
避免HttpClient的"javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated"异常 参考文章: (1 ...
- 自签名证书报错:javax.net.ssl.SSLPeerUnverifiedException: Hostname xxx not verified
背景 现在服务器都要求使用https了,正式商用时,肯定要申请标准的商用ssl证书,但是测试时,为了方便,需要采用自签名证书.下面是在使用自签名证书时遇到的问题. 问题描述 安卓客户端通过okhttp ...
- javax.net.ssl.SSLPeerUnverifiedException: Hostname xxx not verified
问题: 使用自定义证书的https链接接入项目,运行项目时报错: javax.net.ssl.SSLPeerUnverifiedException: Hostname xxx not verified ...
- javax.net.ssl.SSLPeerUnverifiedException: Certificate for IP doesn't match common name of t
今天给服务器端添加了证书,访问的时候报错 javax.net.ssl.SSLPeerUnverifiedException: Certificate for <127.0.0.1> doe ...
- 使用https请求接口报:javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated”异常的问题处理
1.先看出现的问题情况如下: 2.然后我找到了问题的部位是使用httpClient发送请求出现的这个问题,我知道现场使用的是https协议,通过询问现场是否是https协议的证书过期了,但是现场发来如 ...
最新文章
- java中的foreach_java中的foreach语句
- php调用以太坊geth API说明
- spring mybatis 整合jar 包冲突问题
- 关于fflush(stderr);
- dict取值_Python基础数据类型「list、tuple、dict」
- 好纠结啊,JeeWx商业版本和开源版本有什么区别呢?
- linux 系统显示很大,在Linux中可视化显示内存占用情况的方法
- Android 系统调试(2)---android debug 方法
- 广东全国计算机2018年报名时间,2018年3月广东计算机等级考试报名时间
- WampServer的下载方法-解决报错the installation folder chosen is not that wampserver
- 文华财经指标公式博易大师软件指标公式指南针多空资金指标,最精准买卖点提示指标wh6赢顺云随身行指标
- 2007-2018年软考高级之系统分析师真题及答案解析
- 百兆5口工业级以太网交换机HY5700-4505F
- AMD ROCm 硬件支持情况
- 【民大Linux课件】Linux的基础操作1
- ps3自建服务器,PS3新手图文教程之网络设置
- SiamRPN代码分析:architecture
- Pyhon 登陆邮箱
- 做了快6年研发的女程序员,转行做什么合适呢?
- 倒计时器CountDownTimer使用
热门文章
- 运行DreamweaverCS6(绿色破解免)时,没有找到mfc100u.dll!
- MATLAB新手简明使用教程(六)——使用matlab求解定积分和不定积分的问题——新手来看,保证看懂。
- c#代码串口服务器的无线连接,C# 通过串口读取和发送数据
- [安卓开发] Broadcast 三种广播的使用总结
- ultimate++使用_使用Ultimate Custom Widget个性化您的Android主屏幕
- 酉变换 matlab,量子计算原理 Theory of Quantum Computing
- QString自动补全
- 痞子衡嵌入式:飞思卡尔Kinetis系列MCU启动那些事(1)- KBOOT架构
- 问题:EO-1 hyperion影像做 MNF 时报错问题解决
- ICML 2023截稿时间