`
xly1981
  • 浏览: 146624 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

httpcomponents+https支持

    博客分类:
  • java
阅读更多
用于发送https请求,不需要对服务器的CA认证
http://hc.apache.org/httpcomponents-client/tutorial/html/connmgmt.html#d4e470

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;//
import java.security.cert.CertificateException;//
import java.security.cert.X509Certificate;//

import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;//注意导入
import javax.servlet.http.HttpServletRequest;//注意导入
import javax.servlet.http.HttpServletResponse;//注意导入

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.impl.client.DefaultHttpClient;

public class HttpClintUrlTool {

private HttpServletRequest request;
private HttpServletResponse response;
private String urlconn;
private String params;

    public  void send(String address) throws Exception {
        DefaultHttpClient httpclient0 = new DefaultHttpClient();
        DefaultHttpClient httpclient=useTrustingTrustManager(httpclient0);//关键方法
        HttpGet httpget = new HttpGet(this.urlconn);
        // Execute HTTP request
//        System.out.println("executing request " + httpget.getURI());
        HttpResponse response = httpclient.execute(httpget);
        System.out.println(response.getStatusLine());
        HttpEntity entity = response.getEntity();
        if (entity != null) {
            BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent()));
            try {
                System.out.println(reader.readLine());
            } catch (IOException ex) {
                throw ex;
            } catch (RuntimeException ex) {
                httpget.abort();
                throw ex;
               
            } finally {
                reader.close();
            }
        }
        httpclient.getConnectionManager().shutdown();       
    }
   
    /**
     *
     * @param httpClient
     * @return
     */
    public static DefaultHttpClient useTrustingTrustManager(DefaultHttpClient httpClient)
{
       try
       {
// First create a trust manager that won't care.
X509TrustManager trustManager = new X509TrustManager()
{
public void checkClientTrusted(X509Certificate[] chain, String authType)
throws CertificateException
{
// Don't do anything.
}

public void checkServerTrusted(X509Certificate[] chain, String authType)
throws CertificateException
{
// Don't do anything.
}

public X509Certificate[] getAcceptedIssuers()
{
// Don't do anything.
return null;
}
};

// Now put the trust manager into an SSLContext.
SSLContext sslcontext = SSLContext.getInstance("TLS");
sslcontext.init(null, new TrustManager[] { trustManager }, null);

// Use the above SSLContext to create your socket factory
// (I found trying to extend the factory a bit difficult due to a
// call to createSocket with no arguments, a method which doesn't
// exist anywhere I can find, but hey-ho).
SSLSocketFactory sf = new SSLSocketFactory(sslcontext);
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

// If you want a thread safe client, use the ThreadSafeConManager, but
// otherwise just grab the one from the current client, and get hold of its
// schema registry. THIS IS THE KEY THING.
ClientConnectionManager ccm = httpClient.getConnectionManager();
SchemeRegistry schemeRegistry = ccm.getSchemeRegistry();

// Register our new socket factory with the typical SSL port and the
// correct protocol name.
schemeRegistry.register(new Scheme("https", sf, 443));

// Finally, apply the ClientConnectionManager to the Http Client
// or, as in this example, create a new one.
return new DefaultHttpClient(ccm, httpClient.getParams());
}
catch(Throwable t)
{
// AND NEVER EVER EVER DO THIS, IT IS LAZY AND ALMOST ALWAYS WRONG!
t.printStackTrace();
return null;
}
}
   

}
分享到:
评论

相关推荐

    httpcomponents-client-4.5.5 jar包

    6. **支持HTTPS**:内置SSL/TLS支持,能够安全地进行加密通信,确保数据传输的安全性。 三、使用示例 在实际开发中,我们可以通过以下步骤使用HTTPComponents Client 4.5.5发送HTTP请求: 1. 创建HttpClient实例...

    httpcomponents-core-4.1.3-src.zip

    4. **HTTPS支持**:集成SSL/TLS,支持安全的HTTPS通信。 5. **多线程和并发**:库本身是线程安全的,可以方便地在多线程环境中使用。 6. **国际化与本地化**:支持多种字符集编码,适应不同地区的网络环境。 三、...

    httpcomponents-client-4.5.6.rar

    HttpComponents是Java领域中用于处理HTTP协议的重要库,它提供了对HTTP协议的强大支持,包括HTTP请求的发送、响应的接收以及各种复杂的HTTP操作。 描述中提到的几个文件是HttpComponents客户端的核心组件: 1. ...

    httpcomponents-client-4.5.2-bin.zip

    httpcomponents-client-4.5.2-bin.zip HttpComponents也就是以前的httpclient项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端/服务器编程... 支持 HTTPS 协议 支持代理服务器等 支持Cookie

    httpcomponents-client-4.2.5

    在处理HTTPS请求时,HTTPComponents Client提供了强大的安全性保障。它支持SSL/TLS协议,可以配置信任的证书和密钥库。同时,4.2.5版本包含了多种身份验证机制,如Basic Auth、Digest Auth和NTLM,以应对不同服务器...

    httpcomponents-core-4.4.11-bin.zip

    5. **安全性**:HttpComponents Core支持多种安全协议,如SSL/TLS,可以实现HTTPS的安全通信。同时,它还支持多种认证机制,如Basic、Digest、NTLM等,确保数据传输的安全性。 6. **国际化与本地化**:库中的组件...

    httpcomponents-core-4.0-bin.zip

    它不仅提供了标准的GET、POST等HTTP方法,还支持更高级的特性,如分块传输编码、管道连接、代理服务器交互、HTTPS安全通信等。此外,该库允许开发者自定义请求头,以满足各种复杂的网络请求需求。 三、连接管理 在...

    httpcomponents-client-4.1.2-src.zip

    7. **HTTPS支持**:对于安全的HTTPS通信,HttpComponents Client提供了内置的SSL/TLS支持,用户可以通过`SSLSocketFactory`和`KeyManagers`等来配置证书和密钥材料。 8. **多路复用(HTTP/2)**:虽然4.1.2版本不...

    httpcomponents-core-4.2.1 httpcomponents-client-4.2 httpcore4.2

    这个版本提供了丰富的功能,包括支持HTTPS、Cookie管理、多线程请求、身份验证、自动重定向等。通过HttpClient,开发者可以方便地构建复杂的HTTP请求,如POST、PUT、DELETE等,同时支持自定义请求头和实体内容。...

    httpcomponents-core-4.4.8-src

    5. **安全性和认证**:库内集成了SSL/TLS支持,可以创建安全的HTTPS连接。同时,它还提供了多种认证机制,如Basic、Digest、NTLM和Kerberos等,方便在不同环境中进行身份验证。 6. **自定义扩展**:HttpComponents ...

    httpcomponents-core-4.2.3-src

    对于HTTPS支持,HTTPComponents Core依赖于`SSLContext`和`SSLSocketFactory`,可以配置各种安全策略。`SecureProtocolSocketFactory`接口允许用户自定义安全套接层的实现。 七、扩展性与模块化 HTTPComponents ...

    httpcomponents-client-4.5.1

    此外,它还提供了对HTTPS的支持,可以处理SSL/TLS连接。 9. **Asynchronous Programming**:除了同步API外,HttpClient 4.5.1还提供了异步API,使得开发者能够在非阻塞模式下执行HTTP请求,适合于高并发场景。 10....

    httpcomponents-client所有文件

    6. **安全性**:支持HTTPS协议,可以配置SSL/TLS参数,实现安全的数据传输。 二、主要组件 1. **HttpClient**:核心组件,负责发起HTTP请求,管理连接池,处理响应。 2. **HttpCore**:底层通信引擎,提供低级别...

    httpcomponents-core--4.3.3-bin.rar

    此外,它还包含了对HTTPS协议的支持,使得开发者可以安全地进行网络通信。 在Android开发中,由于系统自带的HttpURLConnection类在某些情况下性能不佳或者功能不足,开发者往往选择使用HttpComponents Core作为替代...

    httpcomponents-client-4.5.3所需jar

    这个库是Java开发者用来构建HTTP客户端应用的重要工具,它提供了全面的功能来处理HTTP协议,包括GET、POST以及其他HTTP方法,支持HTTPS安全连接,以及各种HTTP特性如重定向、Cookie管理等。 描述中的...

    httpcomponents.zip

    1. **多协议支持**:HttpClient不仅支持HTTP/1.1,还对HTTP/2进行了部分支持,同时兼容HTTPS,提供安全的数据传输。 2. **异步与同步API**:HttpClient提供了同步和异步两种API,可以满足不同场景的需求。同步API...

    httpcomponents-client-4.2.5 源码+lib库

    4. **HttpClient Transport**:包含了多种传输机制,如基于NIO的传输,以及对HTTPS的支持。 5. **Authentication and Authorization**:提供了HTTP认证和授权的相关库,支持多种标准的认证机制,如Basic、Digest、...

    httpcomponents-core-4.4.4-bin.tar.gz

    同时,对于HTTPS支持,HttpClient提供了SSLContext和SSLSocketFactory配置,允许开发者自定义证书信任和加密算法,确保了通信的安全性。 五、异步与多线程 除了传统的同步执行模式,HttpClient还提供了异步执行能力...

    httpcomponents-client-4.0.1

    该库不仅提供了基本的HTTP功能,还支持HTTPS、代理、重定向、身份验证等多种高级特性,是Java开发中不可或缺的工具之一。在实际项目中,你可以根据具体需求调整配置,优化性能,确保网络通信的稳定性和安全性。

    httpcomponents-client-4.5.8.7z

    3. **身份验证与安全**:支持多种认证机制,如Basic, Digest, NTLM, Kerberos等,并且对SSL/TLS有深度集成,可以进行安全的HTTPS通信。 4. **请求与响应处理**:提供了灵活的接口来构建和发送HTTP请求,解析和处理...

Global site tag (gtag.js) - Google Analytics