HttpClient Java 常用写法总结

1. HttpClient 简介

HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。

2. Java 中使用方法

2.1 创建实例

官方推荐方法是创建 CloseableHttpClient 类

CloseableHttpClient httpclient = HttpClients.createDefault();

2.2 创建请求实例

// 创建 GET 请求实例
HttpGet httpGet = new HttpGet("http://127.0.0.1/test");
// 创建 POST 请求实例
HttpPost httpPost = new HttpPost("http://127.0.0.1/test2");

2.3 添加请求头

httpPost.addHeader("Content-Type", "application/form-data");

2.4 设置配置

httpPost.setConfig(RequestConfig.custom().setConnectTimeout(100).build());

2.5 添加实体

2.5.1 传递 Json 类型的字符串

httpPost.setEntity(new StringEntity("{\"name\":\"Martin\"}", "UTF-8"));

2.5.2 传递 form 表单

使用 BasicNameValuePair 封装 key - value,并添加到 List 集合中

List<BasicNameValuePair> basicNameValuePairs =new ArrayList<>();
basicNameValuePairs.add(new BasicNameValuePair("name", "Martin"));
basicNameValuePairs.add(new BasicNameValuePair("age", "10"));
basicNameValuePairs.add(new BasicNameValuePair("sex", "male"));
httpPost.setEntity(new UrlEncodedFormEntity(basicNameValuePairs, "UTF-8"));

2.5.3 传递 Multipart/form-data 类型的数据

// 创建 MultipartEntityBuilder
MultipartEntityBuilder entityBuilder = MultipartEntityBuilder.create();
// 设置字符编码
ContentType contentType=ContentType.create("text/plain", Charset.forName("UTF-8"));
// 添加文本内容
entityBuilder.addPart("id", new StringBody("value",contentType));
// 添加文件
// 以二进制的形式添加数据,可以添加File、InputStream、byte[]类型的数据。
entityBuilder.addBinaryBody("fileName1", new File("test.txt"));
// 以Key/Value的形式添加ContentBody类型的数据
entityBuilder.addPart("fileName2", new FileBody(new File("test.txt")));
// 设置实体
httpPost.setEntity(entityBuilder.build());

2.6 发送请求

// 发送请求
HttpResponse httpResponse = httpclient.execute(httpPost);

2.7 释放连接

finally {
    httpPost.releaseConnection();
}

站在前人的肩膀上前行,感谢以下博客及文献的支持。

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