JAVA [Básico] Utilice HttpClient para enviar solicitudes de obtención y publicación

El paquete httpclient se usa a menudo en proyectos recientes. Aquí hay un paquete breve para que todos lo usen.
No son muchas tonterías, solo ve al código.


Antes de la introducción de httpclient, maven depende de lo siguiente

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

Recuerde importar el paquete log4j, porque httpclient usa log4j para generar

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

Las herramientas son las siguientes

método Descripción
Publicación de cadena ( Stringurl, List<NameValuePair>lista) Realice una solicitud de publicación, pase los datos de recopilación de la lista y utilícelos BasicNameValuePaircomo elemento de recopilación. Devolver datos de respuesta
Publicación de cadena ( StringURL, BasicNameValuePair...pares) Ejecute la solicitud de publicación, puede pasar más de una BasicNameValuePairo dejarla en blanco. Devolver datos de respuesta
String get ( Stringurl) Ejecutar obtener solicitud y devolver datos de respuesta
/**
 * @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;
    }
}

La prueba es la siguiente

        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();
        }

Inserte la descripción de la imagen aquí
Si desea eliminar la información de depuración de httpclient, puede agregarla al archivo de configuración log4j:

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

El resultado es el siguiente
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_31254489/article/details/108003236
Recomendado
Clasificación