首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Unirest 发起 HTTP 请求 JAVA

Unirest 发起 HTTP 请求 JAVA

原创
作者头像
JQ实验室
发布2025-07-30 14:19:47
发布2025-07-30 14:19:47
2650
举报

下是针对 Java 语言的详细教程,涵盖从安装到执行不同类型的 HTTP 请求以及处理响应的基本步骤

步骤 1: 添加依赖

首先,你需要在你的项目中添加 Unirest 的依赖。如果你使用的是 Maven 项目,请在 pom.xml 文件中添加以下依赖:

代码语言:xml
复制
<dependency>
    <groupId>com.konghq</groupId>
    <artifactId>unirest-java</artifactId>
    <version>3.13.6</version> <!-- 确保使用最新版本 -->
</dependency>

对于 Gradle 用户,可以在 build.gradle 文件中添加:

代码语言:gradle
复制
implementation 'com.konghq:unirest-java:3.13.6'

步骤 2: 发起 GET 请求

GET 请求是最常用的 HTTP 请求之一,用于从服务器获取数据。

代码语言:java
复制
HttpResponse<JsonNode> response = Unirest.get("http://httpbin.org/get")
    .queryString("apiKey", "123") // 添加查询参数
    .asJson(); // 将响应解析为 JsonNode 对象

System.out.println(response.getBody()); // 输出响应体

步骤 3: 发起 POST 请求

POST 请求通常用于向服务器发送数据,如提交表单或上传文件。

代码语言:java
复制
HttpResponse<String> response = Unirest.post("http://httpbin.org/post")
    .header("accept", "application/json")
    .field("param1", "value1") // 添加表单数据
    .field("param2", "value2")
    .asString();

System.out.println(response.getBody());

步骤 4: 处理响应

Unirest 提供了多种方法来处理响应,包括将响应转换为字符串、JSON 对象或其他格式。

  • 作为字符串: 使用 .asString()
  • 作为 JSON: 使用 .asJson()
  • 作为字节流: 使用 .asBinary()

例如,要将响应解析为字符串:

代码语言:java
复制
HttpResponse<String> response = Unirest.get("http://httpbin.org/get").asString();
System.out.println(response.getBody());

步骤 5: 异步请求

Unirest 支持异步请求,允许你在不阻塞主线程的情况下发起 HTTP 请求。

代码语言:java
复制
Future<HttpResponse<String>> future = Unirest.get("http://httpbin.org/get")
    .queryString("apiKey", "123")
    .asStringAsync(new Callback<String>() {
        @Override
        public void completed(HttpResponse<String> response) {
            System.out.println(response.getBody());
        }

        @Override
        public void failed(UnirestException e) {
            System.err.println("Request failed: " + e.getMessage());
        }

        @Override
        public void cancelled() {
            System.out.println("Request was cancelled");
        }
    });

在使用 Unirest 之前,进行一些基本配置可以帮助你更好地定制和优化你的 HTTP 请求处理。

1. 初始化 Unirest

Unirest 需要在使用前初始化。通常可以在应用程序的启动点(如 main 方法)中进行初始化。

代码语言:java
复制
import kong.unirest.Unirest;

public class App {
    public static void main(String[] args) {
        // 初始化 Unirest
        Unirest.init(new UnirestInstance());
    }
}

不过,从 Unirest 3.x 版本开始,默认情况下无需显式初始化,除非你需要自定义配置。

2. 设置全局配置

你可以通过 Unirest.config() 来设置一些全局配置项,如连接超时、读取超时、默认头信息等。

设置超时时间
代码语言:java
复制
Unirest.config()
    .connectTimeout(5000) // 连接超时时间(毫秒)
    .socketTimeout(5000); // 读取超时时间(毫秒)
设置默认头信息

你可以为所有请求设置默认的 HTTP 头信息。

代码语言:java
复制
Unirest.config()
    .setDefaultHeader("Accept", "application/json")
    .setDefaultHeader("User-Agent", "MyApp/1.0");

3. 使用自定义 HttpClient

如果你有特殊需求,比如使用特定的 SSL 配置或连接池设置,可以通过提供自定义的 HttpClient 实例来实现。

代码语言:java
复制
import kong.unirest.apache.ApacheClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;

PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
cm.setMaxTotal(200);
cm.setDefaultMaxPerRoute(20);

ApacheClient httpClient = new ApacheClient(HttpClients.custom()
    .setConnectionManager(cm)
    .build());

Unirest.config().httpClient(httpClient);

4. 日志记录

为了调试目的,集成日志记录库是一个好主意。Unirest 支持多种日志框架,包括 SLF4J、Logback 和 Log4j。

使用 SLF4J 和 Logback 示例:

首先,添加相关依赖:

代码语言:xml
复制
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.32</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.6</version>
</dependency>

然后,在代码中启用日志记录:

代码语言:java
复制
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Logger logger = LoggerFactory.getLogger(MyClass.class);

Unirest.config()
    .enableDebugging(logger); // 启用调试日志

5. 清理资源

当你完成所有的 HTTP 请求后,记得调用 Unirest.shutDown(); 来关闭并释放资源。

代码语言:java
复制
public static void main(String[] args) {
    try {
        // 你的代码
    } finally {
        Unirest.shutDown(); // 确保资源被正确释放
    }
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 步骤 1: 添加依赖
  • 步骤 2: 发起 GET 请求
  • 步骤 3: 发起 POST 请求
  • 步骤 4: 处理响应
  • 步骤 5: 异步请求
  • 1. 初始化 Unirest
  • 2. 设置全局配置
    • 设置超时时间
    • 设置默认头信息
  • 3. 使用自定义 HttpClient
  • 4. 日志记录
  • 5. 清理资源
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档