HttpClient 4.0的使用工具类

HttpClient程序包是一个实现了 HTTP协议的客户端编程工具包,要想熟练的掌握它,必须熟悉 HTTP协议。对于HTTP协议来说,无非就是用户请求数据,服务器端响应用户请求,并将内容结果返回给用户。HTTP1.1由以下几种请求组成:GET,HEAD, POST, PUT, DELETE, TRACE ,OPTIONS,因此对应到HttpClient程序包中分别用HttpGet,HttpHead, HttpPost, HttpPut, HttpDelete, HttpTrace, HttpOptions 这几个类来创建请求。所有的这些类均实现了HttpUriRequest接口,故可以作为execute的执行参数使用。

工具类:

import java.io.IOException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicHeader;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class HttpClentUtil {
    private static final Logger logger = LoggerFactory.getLogger(HttpClentUtil.class);


    /** * httpPost * @param url 路径 * @param jsonParam 参数 * @return */
    public static Object httpPost (String url,String json) {

        //创建HttpClientBuilder 
           HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();  
           //HttpClient 
           CloseableHttpClient closeableHttpClient = httpClientBuilder.build();  

           HttpResponse httpResponse =null;  

            // 请求地址 
            HttpPost httpPost = new HttpPost(url);

           try {  
               System.out.println("json:"+json.toString());
               StringEntity se = new StringEntity(json.toString(),"utf-8");
               se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
               httpPost.setEntity(se); 

               //post请求 
               httpResponse = closeableHttpClient.execute(httpPost);  

               //getEntity() 
               HttpEntity httpEntity = httpResponse.getEntity();  
               if (httpEntity != null) {  
                   //打印响应内容 
                   System.out.println("response:" + EntityUtils.toString(httpEntity, "UTF-8"));  

                   return httpEntity;
               }  
               //释放资源 
               closeableHttpClient.close();  
           } catch (Exception e) {  
               e.printStackTrace();  
           }  

        return null;
    }
    /** * httpGet * @param url 路径 * @return */
    public static Object httpGet(String url) {
         //创建HttpClientBuilder 
        HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();  
        //HttpClient 
        CloseableHttpClient closeableHttpClient = httpClientBuilder.build();  

        HttpGet httpGet = new HttpGet(url);  
        System.out.println(httpGet.getRequestLine());  
        try {  
            //执行get请求 
            HttpResponse httpResponse = closeableHttpClient.execute(httpGet);  
            //获取响应消息实体 
            HttpEntity entity = httpResponse.getEntity();  
            //响应状态 
            System.out.println("status:" + httpResponse.getStatusLine());  
            //判断响应实体是否为空 
            if (entity != null) {  
                System.out.println("contentEncoding:" + entity.getContentEncoding());  
                System.out.println("response content:" + EntityUtils.toString(entity));  
            }  
        } catch (IOException e) {  
            e.printStackTrace();  
        } finally {  
            try {  
            //关闭流并释放资源 
            closeableHttpClient.close();  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
    }  

        return null;    
    }


}

测试类

public class run2 {
    private static final Logger logger = LoggerFactory.getLogger(run2.class);
    /** * 微信下载门店并插入数据库 */
    public static void main(String[] args) {
        System.out.println("--------------开始执行-------------------------");

        //get调用
        String getUrl="http://www.baidu.com/XXXX";
        HttpClentUtil.httpGet(getUrl);


        //post调用
        String postUrl=="http://www.baidu.com/XXXX";
        Map<String,String > params=new HashMap<String, String>();
        params.put("start","0");
        params.put("end","10");
        HttpClentUtil.httpPost(postUrl, JsonUtil.entity2Json(params));



        System.out.println("--------------结束执行-------------------------");

    }

你可能感兴趣的:(编程,服务器,http协议)