【JAVA】如何使用HttpClient发起HTTP请求?

1.HttpClient是什么?

HttpClient是apache为了解决原生Java.net包不易用,开发的一款简单易用的工具。
httpclient的思维导图

2.HttpClient使用步骤

在这里插入图片描述

  1. 创建HttpClientBuilder:可以通过HttpClients / HttpClientBuilder,使用custom()返回对象进行自定义配置,使用createDefault()等等返回不同配置的HttpClientBuilder对象。实际上HttpClients背地里调用的就是HttpClientBuilder,HttpClients作为一个工具类。
  2. 创建HttpClient: 通过set配置,最后使用构建器build返回HttpClient。
  3. 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的文档

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章