JAVA中的HTTP请求怎么利用HttpClient实现发送

  

JAVA中的HTTP请求怎么利用HttpClient实现发送吗?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

<强> HttpClient介绍

HttpClient不是一个浏览器。它是一个客户端的HTTP通信实现库.HttpClient的目标是发送和接收HTTP报文.HttpClient不会去缓存内容,执行嵌入在HTML页面中的javascript代码,猜测内容类型,重新格式化请求/重定向URI,或者其它和HTTP运输无关的功能。

<强> HttpClient使用

使用需要引入jar包,maven项目引入如下:

& lt; dependency>   & lt; groupId> org.apache.httpcomponents   & lt; artifactId> httpclient   & lt; version> 4.5 & lt;/version>   & lt;/dependency>      & lt; dependency>   & lt; groupId> org.apache.httpcomponents   & lt; artifactId> httpcore   & lt; version> 4.4.4   & lt;/dependency>      & lt; dependency>   & lt; groupId> org.apache.httpcomponents   & lt; artifactId> httpmime   & lt; version> 4.5 & lt;/version>   & lt;/dependency>

使用方法,代码如下:

包com.test;
  
  进口java.io.File;
  进口java.io.IOException;
  进口java.security.KeyManagementException;
  进口java.security.KeyStoreException;
  进口java.security.NoSuchAlgorithmException;
  进口java.util.Iterator;
  进口并不知道;
  进口java.util.Map;
  
  进口org.apache.http.HttpEntity;
  进口org.apache.http.HttpStatus;
  进口org.apache.http.client.config.RequestConfig;
  进口org.apache.http.client.methods.CloseableHttpResponse;
  进口org.apache.http.client.methods.HttpGet;
  进口org.apache.http.client.methods.HttpPost;
  进口org.apache.http.config.Registry;
  进口org.apache.http.config.RegistryBuilder;
  进口org.apache.http.conn.socket.ConnectionSocketFactory;
  进口org.apache.http.conn.socket.PlainConnectionSocketFactory;
  进口org.apache.http.conn.ssl.SSLConnectionSocketFactory;
  进口org.apache.http.conn.ssl.SSLContextBuilder;
  进口org.apache.http.conn.ssl.TrustSelfSignedStrategy;
  进口org.apache.http.entity.ContentType;
  进口org.apache.http.entity.StringEntity;
  进口org.apache.http.entity.mime.MultipartEntityBuilder;
  进口org.apache.http.entity.mime.content.FileBody;
  进口org.apache.http.entity.mime.content.StringBody;
  进口org.apache.http.impl.client.CloseableHttpClient;
  进口org.apache.http.impl.client.DefaultHttpRequestRetryHandler;
  进口org.apache.http.impl.client.HttpClients;
  进口org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
  进口org.apache.http.util.EntityUtils;/* *
  *
  * @author H__D
  * @date 2016年10月19日上午11:27:25
  *
  */公开课HttpClientUtil {//utf - 8字符编码
  公共静态最终字符串CHARSET_UTF_8=皍tf-8";//HTTP内容类型。
  公共静态最终字符串CONTENT_TYPE_TEXT_HTML=拔谋?xml";//HTTP内容类型。相当于形式表单的形式,提交数据
  公共静态最终字符串CONTENT_TYPE_FORM_URL=坝τ贸绦?x-www-form-urlencoded";//HTTP内容类型。相当于形式表单的形式,提交数据
  公共静态最终字符串CONTENT_TYPE_JSON_URL=癮pplication/json; charset=utf-8";//连接管理器
  私有静态PoolingHttpClientConnectionManager池;//请求配置
  私有静态RequestConfig RequestConfig;
  
  静态{
  
  尝试{//System.out.println(“初始化httpclient ~ ~ ~开始“);
  SSLContextBuilder builder=new SSLContextBuilder ();
  构建器。loadTrustMaterial (null,新的TrustSelfSignedStrategy ());
  SSLConnectionSocketFactory sslsf=new SSLConnectionSocketFactory (
  builder.build ());//配置同时支持HTTP和HTPPS
  RegistrysocketFactoryRegistry=RegistryBuilder灵活;ConnectionSocketFactory>create () .register (
  “http" PlainConnectionSocketFactory.getSocketFactory ()) .register (
  “https" sslsf) .build ();//初始化连接管理器
  池=new PoolingHttpClientConnectionManager (
  socketFactoryRegistry);//将最大连接数增加到200,实际项目最好从配置文件中读取这个值
  pool.setMaxTotal (200);//设置最大路由
  pool.setDefaultMaxPerRoute (2);//根据默认超时限制初始化requestConfig
  int socketTimeout=10000;
  int connectTimeout=10000;
  int connectionRequestTimeout=10000;
  requestConfig=RequestConfig.custom () .setConnectionRequestTimeout (
  connectionRequestTimeout) .setSocketTimeout socketTimeout .setConnectTimeout (
  connectTimeout) .build ();//System.out.println(“初始化httpclient ~ ~ ~结束“);
  }捕捉(NoSuchAlgorithmException e) {
  e.printStackTrace ();
  }捕捉(KeyStoreException e) {
  e.printStackTrace ();
  }捕捉(KeyManagementException e) {
  e.printStackTrace ();
  }//设置请求超时时间
  requestConfig=RequestConfig.custom () .setSocketTimeout (50000) .setConnectTimeout (50000)
  .setConnectionRequestTimeout (50000) .build ();
  }
  
  公共静态CloseableHttpClient getHttpClient () {
  
  CloseableHttpClient httpClient=HttpClients.custom ()//设置连接池管理
  .setConnectionManager(池)//设置请求配置
  .setDefaultRequestConfig (requestConfig)//设置重试次数
  .setRetryHandler(新DefaultHttpRequestRetryHandler(0,假))
  .build ();
  
  返回httpClient;
  }/* *
  *发送帖子请求
  *
  * @param httpPost
  * @return
  */私有静态字符串sendHttpPost (HttpPost HttpPost) {
  
  CloseableHttpClient httpClient=零;
  CloseableHttpResponse响应=零;//响应内容
  字符串responseContent=零;
  尝试{//创建默认的httpClient实例。
  httpClient=getHttpClient ();//配置请求信息
  httpPost.setConfig (requestConfig);//执行请求
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null

JAVA中的HTTP请求怎么利用HttpClient实现发送