`
king_tt
  • 浏览: 2259574 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

[Android实例] http请求No peer certificate的解决方法

 
阅读更多
不少同学在做HTTP请求新浪授权或新浪数据的时候会出现 javax.net.ssl.SSLPeerUnverifiedException: No peer certificate的异常。现给出解决方法(已通过测试)。


写了一个自定义类继承SSLSocketFactory:
  1. import java.io.IOException;
  2. import java.net.Socket;
  3. import java.net.UnknownHostException;
  4. import java.security.KeyManagementException;
  5. import java.security.KeyStore;
  6. import java.security.KeyStoreException;
  7. import java.security.NoSuchAlgorithmException;
  8. import java.security.UnrecoverableKeyException;

  9. import javax.net.ssl.SSLContext;
  10. import javax.net.ssl.TrustManager;
  11. import javax.net.ssl.X509TrustManager;

  12. import org.apache.http.conn.ssl.SSLSocketFactory;

  13. public class SSLSocketFactoryEx extends SSLSocketFactory {

  14. SSLContext sslContext = SSLContext.getInstance("TLS");

  15. public SSLSocketFactoryEx(KeyStore truststore)
  16. throws NoSuchAlgorithmException, KeyManagementException,
  17. KeyStoreException, UnrecoverableKeyException {
  18. super(truststore);

  19. TrustManager tm = new X509TrustManager() {
  20. public java.security.cert.X509Certificate[] getAcceptedIssuers() {return null;}

  21. @Override
  22. public void checkClientTrusted(
  23. java.security.cert.X509Certificate[] chain, String authType)
  24. throws java.security.cert.CertificateException {}

  25. @Override
  26. public void checkServerTrusted(
  27. java.security.cert.X509Certificate[] chain, String authType)
  28. throws java.security.cert.CertificateException {}
  29. };
  30. sslContext.init(null, new TrustManager[] { tm }, null);
  31. }

  32. @Override
  33. public Socket createSocket(Socket socket, String host, int port,boolean autoClose) throws IOException, UnknownHostException {
  34. return sslContext.getSocketFactory().createSocket(socket, host, port,autoClose);
  35. }

  36. @Override
  37. public Socket createSocket() throws IOException {
  38. return sslContext.getSocketFactory().createSocket();
  39. }
  40. }
复制代码


再来看看如何做回调:
  1. public static HttpClient getNewHttpClient() {
  2. try {
  3. KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
  4. trustStore.load(null, null);

  5. SSLSocketFactory sf = new SSLSocketFactoryEx(trustStore);
  6. sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

  7. HttpParams params = new BasicHttpParams();
  8. HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
  9. HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);

  10. SchemeRegistry registry = new SchemeRegistry();
  11. registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
  12. registry.register(new Scheme("https", sf, 443));

  13. ClientConnectionManager ccm = new ThreadSafeClientConnManager(params, registry);

  14. return new DefaultHttpClient(ccm, params);
  15. } catch (Exception e) {
  16. return new DefaultHttpClient();
  17. }
  18. }
复制代码
现在就可以拿这个HTTPClient去请求数据了!!!!!GOOD
分享到:
评论

相关推荐

    Android Sip2Peer

    **Android Sip2Peer 深入解析** 在移动通信领域,SIP(Session Initiation Protocol)是一种用于控制多媒体通信会话(如语音和视频通话)的协议,而P2P(Peer-to-Peer)技术则允许设备之间直接通信,无需通过中央...

    Android应用源码之Android-Sip2Peer-1.0 实现p2p.zip

    总结来说,"Android-Sip2Peer-1.0"是一个深入研究Android平台P2P通信技术的实例,涵盖了SIP协议的使用、P2P网络架构、网络穿透技术、音频处理以及Android应用开发的多个方面。这个开源项目对于想要学习和开发类似...

    安卓Android源码——安卓Android-Sip2Peer-1.0 实现p2p.rar

    "Android-Sip2Peer-1.0"项目正是这样一个实例,它展示了如何在Android平台上实现P2P通信功能。 1. **SIP协议基础**:SIP是一种应用层控制协议,用于建立、修改和终止多媒体通信会话,如语音和视频通话。它在IETF...

    安卓Android源码——安卓Android-Sip2Peer-1.0 实现p2p.zip

    综上所述,"安卓Android源码——安卓Android-Sip2Peer-1.0 实现p2p.zip"项目提供了在Android平台上实现P2P通信的实例,涵盖了SIP协议、P2P网络技术以及Android多媒体处理等多个重要知识点,对于深入理解移动设备上的...

    Android-Sip2Peer-1.0 实现p2p.rar

    总的来说,Android Sip2Peer-1.0 提供了一套完整的P2P通信解决方案,涉及到了SIP协议、P2P连接、音频处理、并发控制以及安全策略等多个方面。开发者可以通过深入研究该项目,快速构建起自己的Android P2P通信应用。...

    Android高级应用源码-Android-Sip2Peer-1.0 实现p2p.rar

    《Android-Sip2Peer-1.0:探索P2P通信技术在Android平台的应用》 在移动通信领域,P2P(Peer-to-Peer)技术因其高效、分布式的特点,被广泛应用在音视频通话、文件共享等多个场景。Android-Sip2Peer-1.0是一个专门...

    Android-Sip2Peer-1.0 实现p2p.zip

    《Android-Sip2Peer-1.0:探索P2P通信技术在移动平台的应用》 在信息技术高速发展的今天,P2P(Peer-to-Peer)通信作为一种去中心化的网络架构,已经成为众多应用的重要组成部分,特别是在移动设备上。Android平台...

    Android高级应用源码-Android-Sip2Peer-1.0 实现p2p.zip

    《Android-Sip2Peer-1.0:探索P2P通信技术在Android平台的应用》 在移动通信领域,P2P( Peer-to-Peer)技术因其高效、分布式的特点,被广泛应用在音视频通话、文件共享等领域。Android-Sip2Peer-1.0 是一个专门...

    Android应用源码之Android-Sip2Peer-1.0 实现p2p-IT计算机-毕业设计.zip

    在Android-Sip2Peer-1.0中,可能采用了UDP广播或NAT穿透技术来解决这个问题。UDP广播允许设备向本地网络广播自己的存在,而NAT穿透则解决了设备通过家庭或公司网络访问公共互联网时遇到的问题。 2. **媒体流传输**...

    Android-Sip2Peer-1.0 实现p2p

    《Android-Sip2Peer-1.0:探索P2P通信技术在Android平台的应用》 在移动通信领域,P2P( Peer-to-Peer)技术因其高效、分布式的特点,正逐渐成为实现语音、视频通话等实时通信的重要手段。在Android平台上,通过SIP...

    安卓P2P相关-Android-Sip2Peer-1.0实现p2p.zip

    Android-Sip2Peer-1.0 实现p2p.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。

    PeerToPeer资源搜索算法

    在互联网世界中, Peer-to-Peer(P2P)网络是一种分布式系统,其中每个节点既是服务的提供者也是服务的消费者。这种模式显著地降低了中心服务器的负担,使得大规模的信息共享成为可能。"PeerToPeer资源搜索算法"是...

    VB.NET P2P/点对点通讯 实例 Peer_to_Peer

    在信息技术领域,P2P(Peer-to-Peer)通信是一种网络架构,其中每个节点既是服务的提供者也是消费者。这种架构通常用于文件共享、流媒体传输以及分布式计算等场景。VB.NET作为微软.NET框架的一部分,提供了丰富的...

    connection reset by peer问题总结及解决方案

    "Connection Reset by Peer" 是一个常见的网络错误,通常在数据传输过程中出现,表明通信的另一方(客户端或服务器)突然终止了连接。这个问题可能由多种原因引起,下面我们将详细探讨这些原因并提供相应的解决方案...

    p2p,网络,peer-to-peer

    P2P(Peer-to-Peer)网络技术是一种分布式网络模型,在这种模型中,每个节点既是服务的提供者也是服务的消费者。与传统的客户端/服务器模型不同,在P2P网络中,节点之间可以互相通信和服务,无需通过中央服务器进行...

    peer_编程代码_地震波爬虫_peer_

    3. **请求处理**:爬虫需要模拟浏览器发送HTTP请求,可能需要处理登录、验证码、反爬虫策略等问题。 4. **数据解析**:抓取到的HTML或JSON数据需要解析成结构化信息,可能需要用到正则表达式、XML或JSON解析库。 5. ...

    安卓Android源码——-Sip2Peer-1.0实现p2p.zip

    【标题】"安卓Android源码——-Sip2Peer-1.0实现p2p"是一个专注于在Android平台上实现P2P(对等网络)通信的开源项目。这个项目的核心是利用SIP(Session Initiation Protocol)协议进行音视频通话的实现。SIP是一种...

    crawler_peer_east_east_peer官网下载地震波_PEER地震波_peer地震动官网_

    标题中的“crawler_peer_east_east_peer官网下载地震波_PEER地震波_peer地震动官网_”表明这是一个关于使用网络爬虫从PEER(Pacific Earthquake Engineering Research Center)官方网站下载地震波数据的项目。PEER是...

    Peer to Peer Replication - Chs

    ### 对等复制(Peer to Peer Replication)- SQL Server 2008 #### 实验介绍及目标 **对等复制**是一种高级的数据库复制技术,尤其适用于SQL Server 2008这样的企业级数据库管理系统。它允许多个数据库服务器之间...

Global site tag (gtag.js) - Google Analytics