如题,默认下,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. SQL Server AlwaysOn Setup Step-By-Step Guide

    Step-By-Step: Creating a SQL Server 2012 AlwaysOn Availability Group http://blogs.technet.com/b/cani ...

  2. request和request.form和request.querystring的区别

    asp中获取传递的参数,一般用request或者用request成员函数request.form,两种方式都可以获取页面表单传递过来的参数值,一直没留意两种方法有什么区别,我一般喜欢用request( ...

  3. iOS开发-照片选择

    本来想做个注册登录的表单的,想想还是先做个简单的头像选择,一般情况下不管是内部管理系统还是面向公众的互联网公司,注册登录是免不了的,用户头像上传是免不了的,尤其是企业用户,上传了自己的图片才感觉自己买 ...

  4. iOS开发-简单的图片查看器

    现在你只要拿着手机,不管你Android还是iOS,新闻类的App不可避免都有一个功能就是图片查看,做个专题,查看一下内容,App Store中也有专门针对图片浏览的App,鉴于目前所知有限,无法做到 ...

  5. Android导航抽屉-Navigation Drawer

    Google今年七月份的时候更新了他们的Google+应用,采用了新的导航方式并抛弃了navigationdrawer.一时之间,又引发了一系列关于NavigationDrawer利弊的讨论,不过对于 ...

  6. Java基础(五):数组和Java方法

    一.Java数组: 1.声明数组变量: 首先必须声明数组变量,才能在程序中使用数组.下面是声明数组变量的语法:注意: 建议使用 dataType[] arrayRefVar 的声明风格声明数组变量. ...

  7. MySql的入侵测试以及防范

    在做了之前的SQL SERVER之后,便很想尝试一下MYSQL的入侵测试已经防范,与大家一起分享. 总的来说,我一直在用的是MYSQL,对MYSQL比较熟悉,相比较而言,感觉MYSQL更安全,这只是我 ...

  8. [转载]Elasticsearch索引重建(Rebuild)

    From:http://blog.csdn.net/changong28/article/details/38491185 索引重建(Rebuild) 索引创建后,你可以在索引当中添加新的类型,在类型 ...

  9. Tomcat gzip果然强大,js文件压缩率50%以上

    Tomcat配置使用gzip,在server.xml中 <Connector port="9098" protocol="HTTP/1.1" connec ...

  10. 在Fedora10上安装MySQL5.0.18,告捷!

    又一次安MySQL了,为什么又呢,因为前面成功那次算配置,即配置Fedora10自带的MySQL,这个还不算自己安装的,所以有必要再安装一次,以后还装也有可能,换操作系统,换MySql版本都可能这样做 ...