当前位置:首页 > 文章列表 > 文章 > java教程 > Java API 开发中使用 Apache HttpClient 进行 HTTP 请求

Java API 开发中使用 Apache HttpClient 进行 HTTP 请求

2024-03-26 21:28:32 0浏览 收藏

Apache HttpClient是一个用于Java API开发中的HTTP请求的库。通过使用HttpClient,开发者可以便捷地发送各种HTTP请求,包括GET、POST、文件上传等。本文将介绍如何使用HttpClient执行这些操作,涉及请求参数、头部信息和超时时间设置等方面,帮助Java开发者更好地掌握HttpClient的使用方法。

随着互联网的不断发展,HTTP 协议已经成为了现代网络通信的基石之一。在 Java 编程中,通过使用 Apache HttpClient 库,可以非常方便地进行 HTTP 请求操作。本文将介绍如何在 Java API 开发中使用 Apache HttpClient 进行 HTTP 请求。

  1. 准备工作

在开始之前,需要先下载 Apache HttpClient 库,并将其添加为项目的依赖。Apache HttpClient 是一款开源的 Java HTTP 客户端库,可以通过 Maven、Gradle 等工具进行引用。

下面是使用 Maven 引用 Apache HttpClient 的例子:


    
        org.apache.httpcomponents
        httpclient
        4.5.13
    

引入库之后,就可以开始进行 HTTP 请求操作了。

  1. 发送 GET 请求

使用 HttpClient 发送 GET 请求非常简单。下面是一个示例,演示了如何通过 HttpClient 发送 GET 请求,并打印出响应内容:

CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet("https://www.baidu.com");
try (CloseableHttpResponse response = httpClient.execute(httpGet)) {
    HttpEntity entity = response.getEntity();
    if (entity != null) {
        String result = EntityUtils.toString(entity, "UTF-8");
        System.out.println(result);
    }
} catch (IOException e) {
    e.printStackTrace();
}

以上代码会发送一个 GET 请求到百度,然后将响应内容输出。在这段代码中,我们创建了一个 CloseableHttpClient 客户端实例,然后使用 HttpGet 对象创建了一个 GET 请求,并执行该请求。在响应中获取到了实体,然后将实体转换成字符串输出。

  1. 发送 POST 请求

在使用 HttpClient 发送 POST 请求时,可以选择使用 UrlEncodedFormEntity 对象或 MultipartEntityBuilder 对象来包含请求参数。

下面是一个使用 UrlEncodedFormEntity 对象的示例:

CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost("https://www.baidu.com");
List params = new ArrayList<>();
params.add(new BasicNameValuePair("username", "johndoe"));
params.add(new BasicNameValuePair("password", "password123"));
try {
    httpPost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
} catch (UnsupportedEncodingException e) {
    e.printStackTrace();
}
try (CloseableHttpResponse response = httpClient.execute(httpPost)) {
    HttpEntity entity = response.getEntity();
    if (entity != null) {
        String result = EntityUtils.toString(entity, "UTF-8");
        System.out.println(result);
    }
} catch (IOException e) {
    e.printStackTrace();
}

以上代码会向百度发送一个 POST 请求,并将参数包含在请求体中。在这个示例中,我们使用了 UrlEncodedFormEntity 对象来包含请求参数,并将其设置为 POST 请求的实体。在响应中获取到了实体,然后将实体转换成字符串输出。

  1. 发送文件

需要发送文件时,应该使用 MultipartEntityBuilder 对象。下面是一个包含文件的示例:

CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost("http://localhost:8080/upload");
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.addBinaryBody("file", new File("example.txt"));
httpPost.setEntity(builder.build());
try (CloseableHttpResponse response = httpClient.execute(httpPost)) {
    HttpEntity entity = response.getEntity();
    if (entity != null) {
        String result = EntityUtils.toString(entity, "UTF-8");
        System.out.println(result);
    }
} catch (IOException e) {
    e.printStackTrace();
}

以上代码会向 localhost:8080 传输一个名为 example.txt 的文件。在这个示例中,我们使用了 MultipartEntityBuilder 对象,并将文件添加为二进制内容。在响应中获取到了实体,然后将实体转换成字符串输出。

  1. 发送请求时加上头部信息

有时,我们需要在请求中添加头部信息。下面是一个添加头部信息的示例:

CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost("https://www.baidu.com");
httpPost.setHeader("User-Agent", "Mozilla/5.0");
try (CloseableHttpResponse response = httpClient.execute(httpPost)) {
    HttpEntity entity = response.getEntity();
    if (entity != null) {
        String result = EntityUtils.toString(entity, "UTF-8");
        System.out.println(result);
    }
} catch (IOException e) {
    e.printStackTrace();
}

以上代码会向百度发送一个 GET 请求并添加一个 User-Agent 头部信息。在这个示例中,我们使用了 HttpPost 对象来创建一个 GET 请求,并调用 setHeader 方法来添加头部信息。在响应中获取到了实体,然后将实体转换成字符串输出。

  1. 发送请求时设置超时时间

在发送请求时,还可以设置请求超时时间和响应超时时间。这可以防止客户端在等待服务器响应时无限制地阻塞。下面是一个设置超时时间的示例:

CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost("https://www.baidu.com");
RequestConfig requestConfig = RequestConfig.custom()
    .setConnectTimeout(5000) // 连接超时时间
    .setSocketTimeout(5000) // 响应超时时间
    .build();
httpPost.setConfig(requestConfig);
try (CloseableHttpResponse response = httpClient.execute(httpPost)) {
    HttpEntity entity = response.getEntity();
    if (entity != null) {
        String result = EntityUtils.toString(entity, "UTF-8");
        System.out.println(result);    
    }
} catch (IOException e) {
    e.printStackTrace();
}

以上代码会向百度发送一个 POST 请求,并设置了连接超时时间和响应超时时间为 5 秒。在这个示例中,我们使用了 RequestConfig 对象,并通过 custom 方法设置了连接超时时间和响应超时时间。在响应中获取到了实体,然后将实体转换成字符串输出。

  1. 总结

Apache HttpClient 库提供了很多方便的 API,可以让 Java 开发人员非常容易地执行 HTTP 请求。本文介绍了如何使用 Apache HttpClient 发送 GET 请求、POST 请求、包含文件的请求、添加头部信息的请求、设置超时时间的请求。希望本文可以对使用 Apache HttpClient 的 Java 开发人员提供一些帮助。

理论要掌握,实操不能落!以上关于《Java API 开发中使用 Apache HttpClient 进行 HTTP 请求》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

如何在PHP中获取数字的格式化信息如何在PHP中获取数字的格式化信息
上一篇
如何在PHP中获取数字的格式化信息
宝塔面板的Python、Golang等语言的编译配置
下一篇
宝塔面板的Python、Golang等语言的编译配置
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • PubMedQA数据集详解:生物医学问答基准、功能与应用指南
    PubMedQA
    深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
    325次使用
  • H2O EvalGPT:开源LLM大模型评估与排行榜工具
    H2O EvalGPT
    H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
    383次使用
  • LMArena是什么?伯克利AI模型评估平台使用指南与功能解析
    LMArena
    LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
    376次使用
  • 斯坦福HELM:大语言模型Holistic Evaluation整体评估框架详解
    HELM
    深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
    343次使用
  • MMBench详解:多模态大模型基准测试、功能特点与使用指南
    MMBench
    MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
    167次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议 和 隐私政策
返回登录
  • 重置密码