如题,默认下,HttpClient是不能请求Https的,需要自己获取

  1. private static final int SET_CONNECTION_TIMEOUT = 5 * 1000;
  2. private static final int SET_SOCKET_TIMEOUT = 20 * 1000;
  3. public static HttpClient getNewHttpClient() {
  4. try {
  5. KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
  6. trustStore.load(null, null);
  7. SSLSocketFactory sf = new MySSLSocketFactory(trustStore);
  8. sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
  9. HttpParams params = new BasicHttpParams();
  10. HttpConnectionParams.setConnectionTimeout(params, 10000);
  11. HttpConnectionParams.setSoTimeout(params, 10000);
  12. HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
  13. HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);
  14. SchemeRegistry registry = new SchemeRegistry();
  15. registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
  16. registry.register(new Scheme("https", sf, 443));
  17. ClientConnectionManager ccm = new ThreadSafeClientConnManager(params, registry);
  18. HttpConnectionParams.setConnectionTimeout(params, SET_CONNECTION_TIMEOUT);
  19. HttpConnectionParams.setSoTimeout(params, SET_SOCKET_TIMEOUT);
  20. HttpClient client = new DefaultHttpClient(ccm, params);
  21. return client;
  22. } catch (Exception e) {
  23. return new DefaultHttpClient();
  24. }
  25. }

下面是MySSLSocketFactory类

    1. private static class MySSLSocketFactory extends SSLSocketFactory {
    2. SSLContext sslContext = SSLContext.getInstance("TLS");
    3. public MySSLSocketFactory(KeyStore truststore) throws NoSuchAlgorithmException,
    4. KeyManagementException, KeyStoreException, UnrecoverableKeyException {
    5. super(truststore);
    6. TrustManager tm = new X509TrustManager() {
    7. public void checkClientTrusted(X509Certificate[] chain, String authType)
    8. throws CertificateException {
    9. }
    10. public void checkServerTrusted(X509Certificate[] chain, String authType)
    11. throws CertificateException {
    12. }
    13. public X509Certificate[] getAcceptedIssuers() {
    14. return null;
    15. }
    16. };
    17. sslContext.init(null, new TrustManager[] { tm }, null);
    18. }
    19. @Override
    20. public Socket createSocket(Socket socket, String host, int port, boolean autoClose)
    21. throws IOException, UnknownHostException {
    22. return sslContext.getSocketFactory().createSocket(socket, host, port, autoClose);
    23. }
    24. @Override
    25. public Socket createSocket() throws IOException {
    26. return sslContext.getSocketFactory().createSocket();
    27. }
    28. }

Android 实现 HttpClient 请求Https的更多相关文章

  1. Android使用HttpClient请求服务器代码优化版

    首先,我在前面的两篇博文中介绍了在Android中,除了使用java.net包下HttpUrlConnection的API访问HTTP服务之外,我们还可以换一种途径去完成工作.Android SDK附 ...

  2. android通过httpClient请求获取JSON数据并且解析

    使用.net创建一个ashx文件,并response.write  json格式 public void ProcessRequest(HttpContext context) { context.R ...

  3. [转]java 关于httpclient 请求https (如何绕过证书验证)

    原文:http://www.blogjava.net/hector/archive/2012/10/23/390073.html 第一种方法,适用于httpclient4.X 里边有get和post两 ...

  4. 关于httpclient 请求https (如何绕过证书验证)

    第一种方法,适用于httpclient4.X 里边有get和post两种方法供你发送请求使用.导入证书发送请求的在这里就不说了,网上到处都是 import java.io.BufferedReader ...

  5. android http post 请求与 json字符串

    一.目标 android客户端发送一个json格式的http的请求,期望得到服务端的一个json反馈. 1. 客户端发送的json格式为: {"data" : "valu ...

  6. android httpClient 支持HTTPS的2种处理方式

    摘自: http://www.kankanews.com/ICkengine/archives/9634.shtml 项目中Android https或http请求地址重定向为HTTPS的地址,相信很 ...

  7. 使用HttpClient发送HTTPS请求以及配置Tomcat支持SSL

    这里使用的是HttpComponents-Client-4.1.2 package com.jadyer.util; import java.io.File; import java.io.FileI ...

  8. 用HttpClient发送HTTPS请求报SSLException: Certificate for <域名> doesn't match any of the subject alternative names问题的解决

    最近用server酱-PushBear做消息自动推送,用apache HttpClient做https的get请求,但是代码上到服务器端就报javax.net.ssl.SSLException: Ce ...

  9. Android okHttp网络请求之Get/Post请求

    前言: 之前项目中一直使用的Xutils开源框架,从xutils 2.1.5版本使用到最近的xutils 3.0,使用起来也是蛮方便的,只不过最近想着完善一下app中使用的开源框架,由于Xutils里 ...

随机推荐

  1. [转贴] 数字证书及 CA 的扫盲介绍

    [略有删节] 为了达到普及的效果,俺会尽量用比较浅显,非技术的语言来讲清楚. ★先说一个通俗的例子 考虑到证书体系的相关知识比较枯燥.晦涩.俺先拿一个通俗的例子来说事儿.   ◇普通的介绍信 想必大伙 ...

  2. Android数字选择器-NumberPicker

    数字选择器NumberPicker是Android3.0之后引入的一个控件,比较常用,比如说手机常用的闹钟,可以选择小时和分钟,如果你需要兼容3.0之前版本,GitHub上有开源的项目,具体的下载地址 ...

  3. 内存泄漏 Memory Leaks 内存优化 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  4. spring cloud-给Eureka Server加上安全的用户认证

    前言 在前面的一篇文章中 spring cloud中启动Eureka Server 我们启动了Eureka Server,然后在浏览器中输入http://localhost:8761/后,直接回车,就 ...

  5. 【BZOJ2662】【BeiJing wc2012】冻结 分层图 裸的!

    我都不好意思发题解了,看这篇博吧.(飞行路线的,基本一样) http://blog.csdn.net/vmurder/article/details/40075989 同学做了好久.我害怕题里有坑,又 ...

  6. 微博推荐算法学习(Weibo Recommend Algolrithm)

    原文:http://hijiangtao.github.io/2014/10/06/WeiboRecommendAlgorithm/ 基础及关联算法 作用:为微博推荐挖掘必要的基础资源.解决推荐时的通 ...

  7. 在 Win 7 下使用 VirtualBOX 虚拟机安装 OS X 10.9 Mavericks 及 Xcode 5

    参考网址:http://bbs.feng.com/read-htm-tid-7625465.html

  8. DevExpress学习01——下载与安装

    记得刚接触编程时,虽然实现了功能,但用户界面十分丑陋,老师叫我们美化一下界面,不要千篇一律,当时觉得能够写出来功能就洋洋得意了,不觉得界面丑陋.后来,在程序比赛中,我接触了一种第三方控件,它可以快速实 ...

  9. 通过jaxws-ri创建webservice服务端和客户端

    1. 获得开发包 当然是到 SUN 的开发网站下载 JAX-WS RI,或者下载我的网盘备份 ,下载下来的只是一个jar包,参考官网上的方法在命令行调用:java -jar JAXWS2.1.2-20 ...

  10. SIT与UAT的分别

    在企业级软件的测试过程中,经常会划分为三个阶段——单元测试,SIT和UAT,如果开发人员足够,通常还会在SIT之前引入代码审查机制(Code Review)来保证软件符合客户需求且流程正确.下面简单介 ...