1.首先引入httpclient客户端的依赖:
<!--引入httpclient客户端-->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.10</version>
</dependency>
- 响应接口代码:
@RequestMapping("hc")
public String indexHttp(String hello){
return "httpclient" + hello;
}
server:
port: 18081
- httpclient请求代码:
@Test
public void testHttpClient(){
try {
//1.构建http对象(相当于浏览器)
CloseableHttpClient httpClient = HttpClients.createDefault();
//2.请求路径
URIBuilder uriBuilder = new URIBuilder("http://localhost:18081/hc");
//3.创建http get请求对象
HttpGet httpGet = new HttpGet(uriBuilder.build());
//4.创建响应对象
CloseableHttpResponse response = httpClient.execute(httpGet);
/**
* 由于响应接口返回的是一个字符串,因此需要转换
* 响应体数据封装在HttpEntity对象中
*/
String s = EntityUtils.toString(response.getEntity(), "utf-8");
System.out.println(s);
//5.释放资源
response.close();
httpClient.close();
} catch (Exception e) {
e.printStackTrace();
}
}
注意: 此处的响应接口,是一个get请求,但是我在测试类中并没有加入请求参数.
- httpclient的请求结果:
22:40:04.961 [main] DEBUG org.apache.http.impl.conn.PoolingHttpClientConnectionManager - Connection [id: 0][route: {}->http://localhost:18081] can be kept alive for 60.0 seconds
22:40:04.961 [main] DEBUG org.apache.http.impl.conn.DefaultManagedHttpClientConnection - http-outgoing-0: set socket timeout to 0
22:40:04.961 [main] DEBUG org.apache.http.impl.conn.PoolingHttpClientConnectionManager - Connection released: [id: 0][route: {}->http://localhost:18081][total kept alive: 1; route allocated: 1 of 2; total allocated: 1 of 20]
httpclientnull
22:40:04.961 [main] DEBUG org.apache.http.impl.conn.PoolingHttpClientConnectionManager - Connection manager is shutting down
22:40:04.962 [main] DEBUG org.apache.http.impl.conn.DefaultManagedHttpClientConnection - http-outgoing-0: Close connection
22:40:04.962 [main] DEBUG org.apache.http.impl.conn.PoolingHttpClientConnectionManager - Connection manager shut down
输出的就是: httpclientnull
- 设置请求参数:
URIBuilder uriBuilder = new URIBuilder("http://localhost:18081/hc");
//2.1设置请求参数(参数以k-v形式存在,key要与接口入参保持一致)
uriBuilder.addParameter("hello","SS");
//3.创建http get请求对象
HttpGet httpGet = new HttpGet(uriBuilder.build());
输出结果:
22:46:03.191 [main] DEBUG org.apache.http.impl.conn.PoolingHttpClientConnectionManager - Connection [id: 0][route: {}->http://localhost:18081] can be kept alive for 60.0 seconds
22:46:03.191 [main] DEBUG org.apache.http.impl.conn.DefaultManagedHttpClientConnection - http-outgoing-0: set socket timeout to 0
22:46:03.192 [main] DEBUG org.apache.http.impl.conn.PoolingHttpClientConnectionManager - Connection released: [id: 0][route: {}->http://localhost:18081][total kept alive: 1; route allocated: 1 of 2; total allocated: 1 of 20]
httpclientSS
22:46:03.192 [main] DEBUG org.apache.http.impl.conn.PoolingHttpClientConnectionManager - Connection manager is shutting down
22:46:03.192 [main] DEBUG org.apache.http.impl.conn.DefaultManagedHttpClientConnection - http-outgoing-0: Close connection
22:46:03.192 [main] DEBUG org.apache.http.impl.conn.PoolingHttpClientConnectionManager - Connection manager shut down