在编写云笔记时需要调用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相关推荐

  1. android中出现javax.net.ssl.SSLPeerUnverifiedException的解决方案

    javax.net.ssl.SSLPeerUnverifiedException: No peer certificate的错误,根据有关资料解决如下: 1.编写SSLSocketFactoryEx, ...

  2. Android之javax.net.ssl.SSLPeerUnverifiedException: Hostname ip not verified:解决办法

    1.问题 用HttpURLConnection去请求的时候抛了下面的异常 HttpRequest$HttpRequestException: javax.net.ssl.SSLPeerUnverifi ...

  3. javax.net.ssl.SSLPeerUnverifiedException: Hostname 10.1.82.151 not verified android怎么信任证书...

    javax.net.ssl.SSLPeerUnverifiedException: Hostname 10.1.82.151 not verified 意味着客户端无法验证服务器的主机名.这通常是因为 ...

  4. javax.net.ssl.SSLPeerUnverifiedException: Hostname 10.1.82.151 not verified:

    "javax.net.ssl.SSLPeerUnverifiedException: Hostname 10.1.82.151 not verified" 意味着在建立 SSL/T ...

  5. 避免HttpClient的”javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated”异常

    避免HttpClient的"javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated"异常 参考文章: (1 ...

  6. 自签名证书报错:javax.net.ssl.SSLPeerUnverifiedException: Hostname xxx not verified

    背景 现在服务器都要求使用https了,正式商用时,肯定要申请标准的商用ssl证书,但是测试时,为了方便,需要采用自签名证书.下面是在使用自签名证书时遇到的问题. 问题描述 安卓客户端通过okhttp ...

  7. javax.net.ssl.SSLPeerUnverifiedException: Hostname xxx not verified

    问题: 使用自定义证书的https链接接入项目,运行项目时报错: javax.net.ssl.SSLPeerUnverifiedException: Hostname xxx not verified ...

  8. 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 ...

  9. 使用https请求接口报:javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated”异常的问题处理

    1.先看出现的问题情况如下: 2.然后我找到了问题的部位是使用httpClient发送请求出现的这个问题,我知道现场使用的是https协议,通过询问现场是否是https协议的证书过期了,但是现场发来如 ...

最新文章

  1. java中的foreach_java中的foreach语句
  2. php调用以太坊geth API说明
  3. spring mybatis 整合jar 包冲突问题
  4. 关于fflush(stderr);
  5. dict取值_Python基础数据类型「list、tuple、dict」
  6. 好纠结啊,JeeWx商业版本和开源版本有什么区别呢?
  7. linux 系统显示很大,在Linux中可视化显示内存占用情况的方法
  8. Android 系统调试(2)---android debug 方法
  9. 广东全国计算机2018年报名时间,2018年3月广东计算机等级考试报名时间
  10. WampServer的下载方法-解决报错the installation folder chosen is not that wampserver
  11. 文华财经指标公式博易大师软件指标公式指南针多空资金指标,最精准买卖点提示指标wh6赢顺云随身行指标
  12. 2007-2018年软考高级之系统分析师真题及答案解析
  13. 百兆5口工业级以太网交换机HY5700-4505F
  14. AMD ROCm 硬件支持情况
  15. 【民大Linux课件】Linux的基础操作1
  16. ps3自建服务器,PS3新手图文教程之网络设置
  17. SiamRPN代码分析:architecture
  18. Pyhon 登陆邮箱
  19. 做了快6年研发的女程序员,转行做什么合适呢?
  20. 倒计时器CountDownTimer使用

热门文章

  1. 运行DreamweaverCS6(绿色破解免)时,没有找到mfc100u.dll!
  2. MATLAB新手简明使用教程(六)——使用matlab求解定积分和不定积分的问题——新手来看,保证看懂。
  3. c#代码串口服务器的无线连接,C# 通过串口读取和发送数据
  4. [安卓开发] Broadcast 三种广播的使用总结
  5. ultimate++使用_使用Ultimate Custom Widget个性化您的Android主屏幕
  6. 酉变换 matlab,量子计算原理 Theory of Quantum Computing
  7. QString自动补全
  8. 痞子衡嵌入式:飞思卡尔Kinetis系列MCU启动那些事(1)- KBOOT架构
  9. 问题:EO-1 hyperion影像做 MNF 时报错问题解决
  10. ICML 2023截稿时间