`

HttpClient 之 4.x.x版本以上的发送Https请求

阅读更多

https请求比http更安全 是在http的基础上加了SSL数据加密协议。

 

http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

 

因为之前写的是版本比较久的https请求方式,下面介绍看到较新的方式:

import java.net.URI;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.Map.Entry;
 
import javax.net.ssl.SSLContext;
 
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.conn.ssl.SSLContextBuilder;
import org.apache.http.conn.ssl.TrustStrategy;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

public class HttpClientUtil {

    public static final Logger logger = LoggerFactory.getLogger(HttpClientUtil.class);


    public static String doPost(String url, String json)  throws Exception {
        SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {
            @Override
            public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException {
                return true;
            }
        }).build();
        SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext);
        HttpClient httpClient = HttpClients.custom().setSSLSocketFactory(sslsf).build();
        HttpPost httppost = new HttpPost(url);
        MultipartEntityBuilder mEntityBuilder = MultipartEntityBuilder.create();
        //params
        //mEntityBuilder.addTextBody("userName", "1234");

        httppost.setEntity(mEntityBuilder.build());
        //httppost.addHeader("Content-Type", "Application/JSON");

        //其他方法添加参数...
        /*StringEntity entity = new StringEntity(json, Charsets.UTF_8);//解决中文乱码问题
        entity.setContentEncoding("UTF-8");
        entity.setContentType("application/json");
        httppost.setEntity(entity);*/

        int timeOut = 1000*50;
        // set Timeout
        RequestConfig requestConfig = RequestConfig.custom().setConnectionRequestTimeout(timeOut)
                .setConnectTimeout(timeOut).setSocketTimeout(timeOut).build();
        httppost.setConfig(requestConfig);
        // get responce
        HttpResponse responce = httpClient.execute(httppost);
        // get http status code
        int status = responce.getStatusLine().getStatusCode();
        System.out.println("request code:" + status);
        String resultString = null;
        if (status == HttpStatus.SC_OK) {
            // get result data
            HttpEntity entity = responce.getEntity();
            resultString = EntityUtils.toString(entity, Charsets.UTF_8);
        }
        return resultString;
    }
}

 

主要看的是这个:

http://www.jsjtt.com/java/JavaWebkaifa/117.html

另外的还有对其原理介绍深入的:

http://www.aneasystone.com/archives/2016/04/java-and-https.html

其他的:

http://blog.csdn.net/shenyunsese/article/details/41075579

分享到:
评论

相关推荐

    commons-httpclient-3.0.jar JAVA中使用HttpClient可以用到

    虽然`commons-httpclient-3.0.jar`是一个经典版本,但随着Java的发展,Apache社区已经推出了更现代的HttpClient 4.x系列,提供了更多改进和优化,如更好的线程安全、更丰富的API以及对HTTP/2的支持。因此,建议在新...

    httpClient组合包.zip

    版本4.5.x系列对HTTP/1.1协议有很好的支持,并引入了对HTTP/2的部分支持。此外,HttpClient还支持异步操作,可以在多线程环境中高效地处理并发请求。 2. **httpcore-4.4.12.jar**:这是HttpClient的核心库,包含了...

    httpclient-4.5.2.jar.zip

    - **执行请求**:使用HttpClient的`execute()`方法发送请求,并获取`HttpResponse`对象。 - **处理响应**:从`HttpResponse`中获取状态码、响应头和响应体,通常通过`EntityUtils`类进行读取。 4. 进阶用法: - ...

    org.apache.commons.httpclient-3.1.jar

    《Apache Commons HttpClient 3.1:HTTP客户端编程的基石》 ...然而,需要注意的是,HttpClient 3.1已不再维护,最新的稳定版本为HttpClient 4.x,对于新项目建议使用更现代的版本以获取更好的性能和兼容性。

    httpclientDemo(4.x与4以下的版本)例子

    这个"HttpclientDemo(4.x与4以下的版本)"示例显然涵盖了HttpClient在不同版本间的使用方法,特别是4.x版本和4.x之前的版本之间的差异。在本文中,我们将深入探讨HttpClient的基本概念、主要功能以及在不同版本中的...

    HttpClient所需jar包(全) httpClient.4.13jar

    3. `httpmime-4.x.x.jar`: 这个库扩展了HttpClient,支持在HTTP请求中处理MIME类型的数据,比如文件上传。 4. `httpclient-cache-4.x.x.jar`: 提供了HTTP缓存功能,可以提高重复请求的效率。 5. `json-lib-2.x.x.jar...

    commons-httpclient-3.0.jar

    尽管HttpClient 3.0在当时是一个强大的工具,但值得注意的是,此版本现在已较为过时,后续已被HttpClient 4.x系列取代,后者提供了更多的改进和新特性。然而,对于仍然使用Java 5或6的项目,HttpClient 3.0仍然是一...

    httpclient4.x官方范例

    在4.x版本中,HTTPClient进行了重大更新,与之前的3.x版本相比,它引入了更多的功能、优化和改进。本文将深入探讨HTTPClient 4.x的核心特性,并基于提供的"httpclient4.1_examples"示例文件,解析如何使用这个库进行...

    httpclient-4.3.1.jar,httpcore-4.3.2.jar和httpmime-4.3.5.jar

    标题中的“httpclient-4.3.1.jar”,...在版本号上,4.3.x系列代表了一个稳定的版本,可能比早期版本拥有更好的性能和更多的特性。在使用时,开发者需要根据自己的项目需求和兼容性考虑选择合适的版本。

    httpclient-4.5.2.jar安卓网络请求

    4. 执行请求:使用HttpClient的`execute`方法发送请求,并获取响应: ```java CloseableHttpResponse response = httpClient.execute(httpGet); ``` 5. 处理响应:解析响应状态和内容,例如: ```java ...

    HTTPClient 4.3.X

    标题 "HTTPClient 4.3.X" 涉及的是Apache HttpClient库的一个版本,这是一个广泛使用的Java库,用于实现客户端HTTP通信。这个库为开发者提供了丰富的功能,包括发送HTTP请求,处理响应,管理连接池,处理cookies,...

    HttpClient发起HTTPs请求.rar

    在这个"HttpClient发起HTTPs请求.rar"压缩包中,我们主要关注的是如何利用HttpClient处理HTTPS协议的GET和POST请求,以及如何处理返回的JSON数据。这里,我们将详细讨论相关知识点。 首先,HTTPS是一种基于SSL/TLS...

    commons-httpclient-3.1.jar

    《Apache HttpClient 3.1详解及其在Java中的应用》 Apache HttpClient是一个强大的HTTP客户端实现库...然而,由于HttpClient 3.x已被4.x系列取代,虽然3.1仍可使用,但推荐更新到更现代的版本以获取更多的特性和改进。

    httpclient-4.3.1.jar,httpcore-4.3.2.jar,httpmime-4.3.5.jar

    这个库提供了对multipart/form-data和application/x-www-form-urlencoded数据格式的支持,使得客户端可以方便地发送包含文件或其他非文本内容的POST请求。例如,在上传文件或使用表单提交时,这个库会非常有用。 在...

    httpclient4.3.x及其依赖jar包

    3. **执行请求**:调用HttpClient的execute方法发送请求。 4. **处理响应**:获取HttpResponse,并解析其状态码、头部和主体。 5. **关闭资源**:使用完毕后,记得关闭连接以释放系统资源。 总的来说,HttpClient...

    fastjson-1.1.15.jar httpclient-4.1.3.jar httpcore-4.1.4.jar

    HttpClient 4.x版本引入了新的API,增强了性能和稳定性,同时也更加注重线程安全和资源管理。 最后,`httpcore-4.1.4.jar`是HttpClient的基础组件,它是Apache HttpComponents项目的一部分,主要负责HTTP协议的底层...

    (完整版)JAVA利用HttpClient进行POST请求(HTTPS).doc

    在使用HttpClient发送POST请求时,我们需要关心两个方面的问题:一是如何忽略证书验证过程,二是如何发送POST请求。对于前者,我们可以使用X509TrustManager来忽略证书验证过程。对于后者,我们可以使用HttpPost对象...

    httpclient.jar4.4及4.5版本和httpcore.jar和commons-logging.jar.rar

    最后,使用HttpClient的execute方法发送请求,并获取HttpResponse对象以处理响应。 在实际应用中,HTTPClient库的高级特性包括: 1. **多路复用**:HTTP/2协议支持多路复用,允许多个HTTP请求共享一个TCP连接,...

    使用httpClient访问https+443端口号。

    6. **执行请求**:使用HttpClient实例的`execute`方法发送请求,并获取`HttpResponse`。 7. **处理响应**:解析`HttpResponse`,获取状态码,读取响应体,可能需要使用`EntityUtils`类。 8. **关闭连接**:记得在...

Global site tag (gtag.js) - Google Analytics