Java利用Apache HttpClient调用HTTP接口并传递参数(含GET、POST、JSON示例)
在Java中使用HttpClient来调用HTTP接口(类似于cURL命令)并传递参数,可以按照以下步骤进行。我们将使用Apache HttpClient库来实现这一点。 首先,确保你已经添加了Apache HttpClient的依赖。如果你使用的是Maven,可以在`pom.xml`文件中添加以下依赖: ```xml <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.13</version> </dependency> ``` 接下来,我们编写一个示例代码来调用一个HTTP接口并传递参数。 示例:GET请求 假设我们要调用一个GET请求,并传递查询参数。 ```java import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.client.utils.URIBuilder; import org.apache.http.util.EntityUtils; import java.net.URI; import java.io.IOException; public class HttpClientExample { public static void main(String[] args) { try { // 创建HttpClient对象 CloseableHttpClient httpClient = HttpClients.createDefault(); // 构建URI URIBuilder uriBuilder = new URIBuilder("http://example.com/api"); uriBuilder.setParameter("param1", "value1"); uriBuilder.setParameter("param2", "value2"); URI uri = uriBuilder.build(); // 创建HttpGet请求 HttpGet httpGet = new HttpGet(uri); // 执行请求 CloseableHttpResponse response = httpClient.execute(httpGet); try { // 获取响应状态码 int statusCode = response.getStatusLine().getStatusCode(); System.out.println("Status Code: " + statusCode); // 获取响应内容 String responseContent = EntityUtils.toString(response.getEntity()); System.out.println("Response Content: " + responseContent); } finally { // 关闭响应 response.close(); } // 关闭HttpClient httpClient.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 示例:POST请求 假设我们要调用一个POST请求,并传递表单参数。 ```java import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import java.io.IOException; public class HttpClientExample { public static void main(String[] args) { try { // 创建HttpClient对象 CloseableHttpClient httpClient = HttpClients.createDefault(); // 创建HttpPost请求 HttpPost httpPost = new HttpPost("http://example.com/api"); // 设置请求头 httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded"); // 设置请求体 StringEntity params = new StringEntity("param1=value1¶m2=value2"); httpPost.setEntity(params); // 执行请求 CloseableHttpResponse response = httpClient.execute(httpPost); try { // 获取响应状态码 int statusCode = response.getStatusLine().getStatusCode(); System.out.println("Status Code: " + statusCode); // 获取响应内容 String responseContent = EntityUtils.toString(response.getEntity()); System.out.println("Response Content: " + responseContent); } finally { // 关闭响应 response.close(); } // 关闭HttpClient httpClient.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 示例:JSON请求 假设我们要调用一个POST请求,并传递JSON格式的参数。 ```java import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import java.io.IOException; public class HttpClientExample { public static void main(String[] args) { try { // 创建HttpClient对象 CloseableHttpClient httpClient = HttpClients.createDefault(); // 创建HttpPost请求 HttpPost httpPost = new HttpPost("http://example.com/api"); // 设置请求头 httpPost.setHeader("Content-Type", "application/json"); // 设置请求体 String json = "{\"param1\": \"value1\", \"param2\": \"value2\"}"; StringEntity entity = new StringEntity(json); httpPost.setEntity(entity); // 执行请求 CloseableHttpResponse response = httpClient.execute(httpPost); try { // 获取响应状态码 int statusCode = response.getStatusLine().getStatusCode(); System.out.println("Status Code: " + statusCode); // 获取响应内容 String responseContent = EntityUtils.toString(response.getEntity()); System.out.println("Response Content: " + responseContent); } finally { // 关闭响应 response.close(); } // 关闭HttpClient httpClient.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 以上示例展示了如何使用Apache HttpClient库在Java中调用HTTP接口并传递不同类型的参数。你可以根据实际需求选择合适的请求方法和参数类型。 ######[AI写代码神器 | 1123点数解答 | 2024-11-13 17:29:38]
- Maven POM文件开头元素详解及Spring Boot项目配置规范(DeepSeek | 1912点数解答 | 2026-04-23 16:43:34)20
- Python实现深度优先爬虫:精准爬取百度域名下链接,模拟输出详细信息(GPT | 2142点数解答 | 2025-05-13 15:54:49)311
- Java 创建 HTTP POST 请求实现文件上传:代码示例与注意要点 (字节豆包 | 300点数解答 | 2024-12-06 16:07:20)356
- 易语言模拟POST请求抓包内容:代码示例及注意要点揭秘(字节豆包 | 1131点数解答 | 2025-06-02 12:46:09)205
- Java 实现复制粘贴功能:打造简易文本复制粘贴程序(GPT | 1497点数解答 | 2024-08-25 09:40:33)438
- "Fixing Postman Script: Correcting Login POST Request with JSON Data"(阿里通义 | 419点数解答 | 2024-10-29 19:35:25)271
- 使用 JavaScript 实现 HTTP 登录请求:从环境变量获取信息并发送 POST 请求(GPT | 68点数解答 | 2024-10-29 19:35:54)275
- 解决 Java 中 HTTP 请求方法名含非法字符异常:示例与注意要点(阿里通义 | 321点数解答 | 2024-12-03 17:34:09)378
- 易语言实现高并发 HTTP 操作:多线程、线程池与异步操作实战(字节豆包 | 849点数解答 | 2025-06-03 23:17:33)297
- 安踏商品数据获取代码问题修正与三点优化建议揭秘(阿里通义 | 532点数解答 | 2024-12-25 14:12:03)340
- Java实现链表反转:迭代与递归双解法详解及开发实战指南(DeepSeek | 1409点数解答 | 2026-03-15 15:09:29)61
- 易语言:实现搜索通配符功能,解决搜索内容超255问题(字节豆包 | 32点数解答 | 2026-02-09 16:44:31)70