如题,默认下,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. Iterator 迭代器模式 MD

    迭代器模式 简介 Iterator模式是行为模式之一,它把对容器中包含的内部对象的访问[委让]给外部类,使用Iterator按顺序进行遍历访问. 在程序设计中,经常有这种情况:需要从大量的数据集合中一 ...

  2. 使用Spring Security和OAuth2实现RESTful服务安全认证

    这篇教程是展示如何设置一个OAuth2服务来保护REST资源. 源代码下载github. (https://github.com/iainporter/oauth2-provider)你能下载这个源码 ...

  3. Untracked Files Prevent Checkout move or commit them before checkout

    点开View Files... 查看里面的文件名称,在项目的.idea文件夹中删掉ViewFiles显示的文件夹名称就好

  4. nGrinder3.4 性能测试框架安装

    转载:https://blog.csdn.net/mbugatti/article/details/53782070 nGrinder3.4 (2016.05.24) 支持JDK1.8 github地 ...

  5. OSX:不同OSX版本号的标记可能不兼容-续

    不同OSX版本号的标记可能不兼容-续: 经过測试,10.10DP2的Update.俗称DP3.的版本号也没有纠正这个问题.而造成该问题的是安装过程中一開始就选择中文,假设安装时使用英文.在第一次进入操 ...

  6. PHP的CLI综合

    tip1:传入参数 使用标准的输入和输出    PHP CLI会定义三个常量,以便让在命令行提示符下与解释器进行交互操作更加容易.这些常量见表格A.表格A 常量 说明STDIN 标准的输入设备STDO ...

  7. Office PPT中如何插入flash

    1 在"视图"选项中找到工具栏,控件工具箱,最后一个其他工具中的shockwave flash object 2 当鼠标变成十字架之后随便画一个矩形,然后会出现一个白色的矩形中间十 ...

  8. Office EXCEL 不用VB,你也可以制作自己的Excel菜单!

    还记得这个讨厌的VB吗?为了做一个COM插件,生成一个DLL,麻烦一大堆.其实我们想要的仅仅是把自己写的宏封装一下,更好的调用而已. 打开工具,自定义,在命令菜单中选择新菜单,然后拖放右侧的新菜单到顶 ...

  9. 【.NET中AOP的实现方案】静态代理

    Spring AOP 应该是比较出名的了,今天说的是C#里的AOP,C#的AOP实现的方式有很多种,现在就先介绍静态代理的实现方案: 模拟场景:我们在删除用户,或者更新用户的时候进行数据原始备份,这样 ...

  10. 【C++系列小结】面向过程的编程风格

    前言 编程语言有面向过程和面向对象之分,因此编程风格也有所谓的面向过程的编程和面向对象的编程,并且语言的性质不会限制编程的风格. 这里主要说一以下向过程的编程. "面向过程"(Pr ...