1.HttpClient是什么?
HttpClient是apache为了解决原生Java.net包不易用,开发的一款简单易用的工具。
2.HttpClient使用步骤
- 创建HttpClientBuilder:可以通过HttpClients / HttpClientBuilder,使用custom()返回对象进行自定义配置,使用createDefault()等等返回不同配置的HttpClientBuilder对象。实际上HttpClients背地里调用的就是HttpClientBuilder,HttpClients作为一个工具类。
- 创建HttpClient: 通过set配置,最后使用构建器build返回HttpClient。
- HttpClient通过excute对应的request,返回结果response。
3.示例
(1)简单示例
//简单get请求
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet("http://targethost/homepage");
CloseableHttpResponse response1 = httpclient.execute(httpGet);
try {
HttpEntity entity1 = response1.getEntity(); //获取响应体
EntityUtils.consume(entity1); //EntityUtils工具类
} finally {
response1.close();
}
//简单post请求
HttpPost httpPost = new HttpPost("http://targethost/login");
List <NameValuePair> nvps = new ArrayList <NameValuePair>();
nvps.add(new BasicNameValuePair("username", "vip"));
nvps.add(new BasicNameValuePair("password", "secret"));
httpPost.setEntity(new UrlEncodedFormEntity(nvps));
CloseableHttpResponse response2 = httpclient.execute(httpPost);
try {
System.out.println(response2.getStatusLine());
HttpEntity entity2 = response2.getEntity();
EntityUtils.consume(entity2);
} finally {
response2.close();
}
(2)添加配置(代理、连接超时)
HttpHost proxy = new HttpHost(PROXY_IP, PROXY_PORT, "http");
System.out.println("【代理信息】ip:" + PROXY_IP + "port:" + PROXY_PORT);
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet(url);
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(5000) //设置连接建立超时的时间
.setConnectionRequestTimeout(5000)
.setSocketTimeout(5000)
.setProxy(proxy) //设置代理
.setRedirectsEnabled(true).build();
httpGet.setConfig(requestConfig);
return EntityUtils.toString(httpClient.execute(httpGet).getEntity());
以上是HttpClient简单的使用,图一为简单的使用。图二是我在做项目时,需要在内网集成阿里云短信服务需要使用代理访问阿里服务的使用。
ps:jdk11重写了HttpClient,并希望替代这些第三方工具集,使用方法类似,也是通过构建器模式去设置。
参考Apache的文档