当前位置: 首页 > wzjs >正文

做网站的服务器哪个系统好企业培训课程种类

做网站的服务器哪个系统好,企业培训课程种类,佛山专业网站建设团队,吉林建设工程信息网Apache HttpClient 5 核心用法详解 Apache HttpClient 5 是 Apache 基金会推出的新一代 HTTP 客户端库&#xff0c;相比 4.x 版本在性能、模块化和易用性上有显著提升。以下是其核心用法及最佳实践&#xff1a; 一、添加依赖 Maven 项目&#xff1a; <dependency><…

Apache HttpClient 5 核心用法详解

Apache HttpClient 5 是 Apache 基金会推出的新一代 HTTP 客户端库,相比 4.x 版本在性能、模块化和易用性上有显著提升。以下是其核心用法及最佳实践:


一、添加依赖
Maven 项目:
<dependency><groupId>org.apache.httpcomponents.client5</groupId><artifactId>httpclient5</artifactId><version>5.4-alpha1</version> <!-- 检查最新版本 -->
</dependency>
Gradle 项目:
implementation 'org.apache.httpcomponents.client5:httpclient5:5.4-alpha1'

二、基础用法
1. 创建 HttpClient 实例
import org.apache.hc.client5.http.classic.methods.HttpGet;
import org.apache.hc.client5.http.classic.methods.HttpPost;
import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
import org.apache.hc.client5.http.impl.classic.HttpClients;
import org.apache.hc.core5.http.ClassicHttpResponse;
import org.apache.hc.core5.http.HttpEntity;
import org.apache.hc.core5.http.io.entity.EntityUtils;
import org.apache.hc.core5.http.io.entity.StringEntity;// 创建带连接池的客户端(默认连接池大小:2*CPU核心数)
CloseableHttpClient httpClient = HttpClients.custom().setConnectionManagerShared(true) // 共享连接池(推荐).setDefaultRequestConfig(RequestConfig.custom().setConnectTimeout(5000)   // 连接超时(毫秒).setResponseTimeout(10000) // 响应超时.build()).build();
2. 发送 GET 请求
HttpGet httpGet = new HttpGet("https://api.example.com/data");try (CloseableHttpClient client = HttpClients.createDefault()) {try (CloseableHttpResponse response = client.execute(httpGet)) {HttpEntity entity = response.getEntity();String result = EntityUtils.toString(entity);System.out.println("Status: " + response.getCode() + ", Body: " + result);}
}
3. 发送 POST 请求(提交 JSON)
HttpPost httpPost = new HttpPost("https://api.example.com/post");
String jsonBody = "{\"key\":\"value\"}";
httpPost.setEntity(new StringEntity(jsonBody, ContentType.APPLICATION_JSON));try (CloseableHttpClient client = HttpClients.createDefault()) {try (CloseableHttpResponse response = client.execute(httpPost)) {HttpEntity entity = response.getEntity();String result = EntityUtils.toString(entity);System.out.println("Status: " + response.getCode() + ", Body: " + result);}
}

三、高级功能
1. 连接池配置(优化性能)
PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
cm.setMaxTotal(100);       // 最大连接数
cm.setDefaultMaxPerRoute(20); // 每个路由默认最大连接数CloseableHttpClient client = HttpClients.custom().setConnectionManager(cm).build();
HttpGet httpGet = new HttpGet("https://api.example.com/data");
httpGet.setHeader("User-Agent", "Apache HttpClient 5");
httpGet.setHeader("Authorization", "Bearer token123");// 添加 Cookie
BasicCookieStore cookieStore = new BasicCookieStore();
BasicClientCookie cookie = new BasicClientCookie("session_id", "abc123");
cookie.setDomain("api.example.com");
cookieStore.addCookie(cookie);CloseableHttpClient client = HttpClients.custom().setDefaultCookieStore(cookieStore).build();
3. 文件上传(Multipart)
HttpPost httpPost = new HttpPost("https://api.example.com/upload");
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.addBinaryBody("file", new File("path/to/file.jpg"), ContentType.MULTIPART_FORM_DATA, "file.jpg");
builder.addTextBody("description", "Test upload", ContentType.TEXT_PLAIN);httpPost.setEntity(builder.build());try (CloseableHttpClient client = HttpClients.createDefault()) {try (CloseableHttpResponse response = client.execute(httpPost)) {// 处理响应}
}
4. 异步请求(非阻塞)
HttpClientAsyncClient asyncClient = HttpClients.createAsyncDefault();HttpGet httpGet = new HttpGet("https://api.example.com/data");
asyncClient.execute(httpGet, new FutureCallback<>() {@Overridepublic void completed(ClassicHttpResponse response) {HttpEntity entity = response.getEntity();String result = EntityUtils.toString(entity);System.out.println("Async Response: " + result);}@Overridepublic void failed(Exception ex) {ex.printStackTrace();}@Overridepublic void cancelled() {System.out.println("Request cancelled");}
});// 主线程继续执行其他任务
Thread.sleep(5000); // 等待异步结果(实际需用 CountDownLatch 等机制)

四、迁移指南(从 HttpClient 4.x)
  1. 包名变化

    • org.apache.http.client.HttpClient → org.apache.hc.client5.http.classic.HttpClient
    • HttpGet/HttpPost 等类路径调整。
  2. API 调整

    • 响应处理:CloseableHttpResponse 替代 CloseableHttpResponse(方法名类似)。
    • 连接池管理:使用 PoolingHttpClientConnectionManager 替代 PoolingHttpClientConnectionManager
  3. 移除废弃方法

    • 如 HttpClientBuilder.setMaxConnPerRoute() 改为 setMaxConnPerRoute(Route, int)

五、最佳实践
  1. 复用 HttpClient 实例:避免频繁创建/销毁,推荐使用 HttpClients.custom().build() 创建单例。
  2. 资源释放:使用 try-with-resources 确保 CloseableHttpClient 和 CloseableHttpResponse 正确关闭。
  3. 异常处理:捕获 IOException 和 HttpRequestException,处理网络错误和 HTTP 状态码。
  4. 性能监控:通过 ConnectionStats 监控连接池使用情况。

通过以上内容,您已掌握 Apache HttpClient 5 的核心用法,可根据项目需求实现高效、稳定的 HTTP 通信。如需处理复杂场景(如 OAuth2 认证、WebSocket),可进一步探索其扩展模块。

http://www.dtcms.com/wzjs/510383.html

相关文章:

  • 网站搜索怎么做的百度网盘客服电话24小时
  • 武汉网站制作哪家强seo首页排名优化
  • 临淄辛店今天招聘信息专业seo推广
  • 山东网站备案时间南昌seo网站管理
  • 编程网站scratch在线使用长沙网站包年优化
  • 青海网站建设与制作南宁seo渠道哪家好
  • 建设厅官方网站河南自媒体营销
  • 网站建行接口自助搭建平台
  • dw php网站建设视频教程seo搜索优化待遇
  • 农业电商网站建设方案小说关键词生成器
  • 企业做网站被骗百度搜索引擎关键词
  • 网站做视频的软件有哪些深圳网络推广哪家比较好
  • 晋城网站设计人百度推广官方网站
  • 乌鲁木齐网站建设中心常用的seo工具
  • 网站开发考什么证附近电脑培训班位置
  • 中小企业网站建设问题近期国际热点大事件
  • 政务公开和网站建设自查报告上海排名优化seo
  • 金华企业网站建站模板重庆seo整站优化设置
  • 娄底高端网站建设seo快速推广
  • 站长一般几个网站网络市场调研的五个步骤
  • 湘潭房产网站建设重庆百度推广的代理商
  • 武汉网站建设公司企业整站优化
  • dw做网站一般设为什么样引擎搜索技巧
  • 网站管理员权限商铺营销推广方案
  • 八戒影视大全鼓楼网站seo搜索引擎优化
  • 钮奇网站建设东莞网站seo公司
  • 公司让我做网站负责人上海有名网站建站开发公司
  • 怎么做网站赚钱怎样去推广自己的网店
  • 个人网站做影视成都官网seo厂家
  • 上高县城乡规划建设局网站小说风云榜