Android 实现 HttpClient 请求Https

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

[java] view plaincopy

  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类

[java] view plaincopy

    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

时间: 2024-12-28 13:55:31

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

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

android通过httpClient请求获取JSON数据并且解析:http://www.cnblogs.com/gzggyy/archive/2013/05/08/3066288.html Android--使用Http向服务器发送请求并取得返回结果,下载图片:http://www.2cto.com/kf/201307/229489.html Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据):http://blog.csdn.net/he

[译]HttpClient请求HTTPS URL

1.概览 本文将演示如何配置Apache HttpClient 4 添加ssl支持.目的很简单----无需有效证书即可成功请求 HTTPS URLs. 如果你想深入挖掘和学习其他和HttpClient相关的酷知识,请点击httpclient-guide 延伸阅读: httpclient-connection-management httpclient-advanced-config httpclient-4-cookies 2. SSLPeerUnverifiedException异常 使用ht

Android 通过httpclient请求web服务器,并解决用户登录session保持

package com.rainet.tiis.network; import java.util.Iterator;import java.util.List;import java.util.Map; import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http.client.CookieStore;import org.apache.http.client.Ht

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

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

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

原文:http://www.blogjava.net/hector/archive/2012/10/23/390073.html 第一种方法,适用于httpclient4.X 里边有get和post两种方法供你发送请求使用. 导入证书发送请求的在这里就不说了,网上到处都是 import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamRea

android http post 请求与 json字符串

一.目标 android客户端发送一个json格式的http的请求,期望得到服务端的一个json反馈. 1. 客户端发送的json格式为: {"data" : "valueString"} 2. 服务端发送的json格式:  { "errorCode" : "valueString", "entries":[ { "name":"海底捞", "phone&q

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

摘自: http://www.kankanews.com/ICkengine/archives/9634.shtml 项目中Android https或http请求地址重定向为HTTPS的地址,相信很多人都遇到了这个异常(无终端认证): javax.net.ssl.SSLPeerUnverifiedException: No peer certificate 1.没遇到过的问题,搜索吧,少年 log里出现这个异常,作者第一次遇到,不知道啥意思.看下字面意思,是ssl协议中没有终端认证.SSL?作

android httpClient 支持HTTPS的访问方式

项目中Android https请求地址遇到了这个异常(无终端认证): javax.net.ssl.SSLPeerUnverifiedException: No peer certificate 是SSL协议中没有终端认证. 没有遇到过的问题,于是无奈的去找度娘....... 看了不少大神的博客后得到的解决方案如下:     /**      * Post请求连接Https服务      * @param serverURL  请求地址      * @param jsonStr    请求报文

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

这里使用的是HttpComponents-Client-4.1.2 1 package com.jadyer.util; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileNotFoundException; 6 import java.io.IOException; 7 import java.security.KeyManagementException; 8 import java