HttpClient是Apache Jakarta Common下的子项目,可以用来提供最新的,高效的,功能丰富的支持Http协议的客户端编程工具包,它支持HTTP 最新的版本和协议,通过HTTPClient就可以构造Http请求并发送Http请求
核心API:
HttpClient
HttpClients
CloseableHttpClient
HttpGet
HpptPost
发送请求步骤:
1. 创建HttpClient对象。
2. 创建请求方法的实例,并指定请求URL。如果需要发送GET请求,创建HttpGet对象;如果需要发送POST请求,创建HttpPost对象。
3. 如果需要发送请求参数,可调用HttpGet、HttpPost共同的setParams(HttpParams params)方法来添加请求参数;对于HttpPost对象而言,也可调用setEntity(HttpEntity entity)方法来设置请求参数。
4. 调用HttpClient对象的execute(HttpUriRequest request)发送请求,该方法返回一个HttpResponse。
5. 调用HttpResponse的getAllHeaders()、getHeaders(String name)等方法可获取服务器的响应头;调用HttpResponse的getEntity()方法可获取HttpEntity对象,该对象包装了服务器的响应内容。程序可通过该对象获取服务器的响应内容。
6. 释放连接。无论执行方法是否成功,都必须释放连接
maven坐标:
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.13</version>
</dependency>
使用HttpClient发送get请求示例:
@Test
public void testGet() throws IOException {
//1 创建httpclient对象
CloseableHttpClient httpClient = HttpClients.createDefault();
//2 创建请求对象
HttpGet httpGet = new HttpGet("http://localhost:8080/user/shop/status");
// 发送请求
CloseableHttpResponse response = httpClient.execute(httpGet);
//3 获取服务端返回的状态码
int statusCode = response.getStatusLine().getStatusCode();
System.out.println("状态码为"+statusCode);
//4 处理服务端返回的数据
HttpEntity entity = response.getEntity();
String string = EntityUtils.toString(entity);
System.out.println("返回的数据为"+string);
//5关闭资源
response.close();
httpClient.close();
}
使用HttpClient发送post请求:
/**
* 测试通过httpclient发送POST请求
*/
@Test
public void getPost() throws Exception{
//创建HTTPclient对象
CloseableHttpClient httpClient = HttpClients.createDefault();
// 创建请求对象
HttpPost httpPost = new HttpPost("http://localhost:8080/admin/employee/login");
//发送格式为json,将数据转化为json格式
JSONObject jsonObject = new JSONObject();
jsonObject.put("username","admin");
jsonObject.put("password","123456");
StringEntity stringEntity = new StringEntity(jsonObject.toString());
//指定请求编码方式
stringEntity.setContentEncoding("utf-8");
//数据格式
stringEntity.setContentType("application/json");
httpPost.setEntity(stringEntity);
//发送请求
CloseableHttpResponse response = httpClient.execute(httpPost);
//解析返回结果
int statusCode = response.getStatusLine().getStatusCode();
System.out.println("响应码为:" +statusCode);
HttpEntity entity = response.getEntity();
String body = EntityUtils.toString(entity);
System.out.println("响应数据为:"+body);
//关闭资源
response.close();
httpClient.close();
}
标签:请求,对象,用法,发送,HttpClient,response,httpClient
From: https://blog.csdn.net/2301_82032274/article/details/140576338