JAVA 【基础】使用 HttpClient 发送get,post请求

最近项目中经常用到httpclient 这个包,在这里简单封装一下给大家使用。
废话不多说,直接上代码。


没有引入httpclient的先引入,maven依赖如下

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.2</version>
</dependency>

记得还要导log4j 的包,因为httpclient是使用log4j输出的

<dependency>
	<groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
	<version>1.2.17</version>
</dependency>

工具类如下

方法 说明
String post(String url,List<NameValuePair> list) 执行post请求,传入list集合数据,使用BasicNameValuePair作为集合元素。返回响应数据
String post(String url,BasicNameValuePair...pairs) 执行post请求,可传入多个BasicNameValuePair,或者留空。返回响应数据
String get(String url) 执行get请求,返回响应数据
/**
 * @Author: KL-Skeleton
 * @Description:
 * @Date: Created in 18:47 2020/7/30
 */

public class HttpUtil {
    
    

    //post请求,带集合参数
    public static String post(String url,List<NameValuePair> list) throws Exception {
    
    
        // 通过HttpPost来发送post请求
        HttpPost httpPost = new HttpPost(url);
        // 我们发现Entity是一个接口,所以只能找实现类,发现实现类又需要一个集合,集合的泛型是NameValuePair类型
        UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(list);
        // 通过setEntity 将我们的entity对象传递过去
        httpPost.setEntity(formEntity);
        return execute(httpPost);
    }

    //post请求,不带参数,或者带多个参数
    public static String post(String url,BasicNameValuePair...pairs) throws Exception {
    
    
        List<NameValuePair> pairs1 = new ArrayList<>();
        for(BasicNameValuePair nameValuePair: pairs){
    
    
            pairs1.add(nameValuePair);
        }
        return  post(url,pairs1);
    }

    //get请求
    public static String  get(String url) throws Exception {
    
    
        return execute(new HttpGet(url));
    }

    //执行请求返回响应数据
    public static String execute(HttpRequestBase http)  throws Exception {
    
    

        CloseableHttpClient client = HttpClients.createDefault();
        // 通过client调用execute方法
        CloseableHttpResponse Response = client.execute(http);
        //获取响应数据
        HttpEntity entity = Response.getEntity();
        //将数据转换成字符串
        String str = EntityUtils.toString(entity, "UTF-8");
        //关闭
        Response.close();
        return  str;
    }
}

测试如下

        try {
    
    
            //get请求
            System.out.println(HttpUtil.get("https://www.baidu.com/"));
            
            //post请求,不带参数
            System.out.println(HttpUtil.post("https://www.baidu.com/"));
            
            //post请求,带一个参数 ,类似 https://www.baidu.com/?user=skeleton
            System.out.println(HttpUtil.post("https://www.baidu.com/",new BasicNameValuePair("user","skeleton")));
           
           //post请求,带多个参数 ,类似 https://www.baidu.com/?user=skeleton&pwd=123456
            List<NameValuePair> pairs = new ArrayList<>();
            pairs.add(new BasicNameValuePair("user","skeleton"));
            pairs.add(new BasicNameValuePair("pwd","123456"));
            System.out.println(HttpUtil.post("https://www.baidu.com/",pairs));

        } catch (Exception e) {
    
    
            e.printStackTrace();
        }

在这里插入图片描述
如果想去掉httpclient的调试信息,可以在log4j的配置文件中加入:

###将httpclient输出日志级别调到ERROR
log4j.logger.org.apache.http = error
log4j.logger.httpclient.wire = error

结果如下
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_31254489/article/details/108003236