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 ( String url, List<NameValuePair> lista) |
Realice una solicitud de publicación, pase los datos de recopilación de la lista y utilícelos BasicNameValuePair como elemento de recopilación. Devolver datos de respuesta |
Publicación de cadena ( String URL, BasicNameValuePair... pares) |
Ejecute la solicitud de publicación, puede pasar más de una BasicNameValuePair o dejarla en blanco. Devolver datos de respuesta |
String get ( String url) |
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();
}
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