Hutool 发送 HTTP 请求的几种常见写法

最简单的 GET 请求:

java 复制代码
String result = HttpUtil.get("https://www.baidu.com");

带参数的 GET 请求:

java 复制代码
// 方法1: 直接拼接URL参数
String result = HttpUtil.get("https://www.baidu.com?name=张三&age=18");

// 方法2: 使用 HashMap 构建参数
HashMap<String, Object> params = new HashMap<>();
params.put("name", "张三");
params.put("age", "18");
String result = HttpUtil.get("https://www.baidu.com", params);

POST 请求:

java 复制代码
// 简单POST
String result = HttpUtil.post("https://www.baidu.com", "body content");

// 带表单参数的POST
HashMap<String, Object> params = new HashMap<>();
params.put("name", "张三");
params.put("age", "18");
String result = HttpUtil.post("https://www.baidu.com", params);

发送 JSON:

java 复制代码
HashMap<String, Object> paramMap = new HashMap<>();
paramMap.put("name", "张三");
paramMap.put("age", 18);

String result = HttpRequest.post("https://www.baidu.com")
    .header("Content-Type", "application/json")
    .body(JSONUtil.toJsonStr(paramMap))
    .execute()
    .body();

高度自定义的请求:

java 复制代码
HttpRequest request = HttpRequest.post("https://www.baidu.com")
    .header("Authorization", "Bearer token123")
    .header("Custom-Header", "value")
    .timeout(20000)  //超时时间20秒
    .form(params)    //表单参数
    .cookie("sessionId", "abc123");

HttpResponse response = request.execute();
String result = response.body();
int status = response.getStatus();

文件上传:

java 复制代码
HashMap<String, Object> params = new HashMap<>();
params.put("file", FileUtil.file("path/file.jpg"));
String result = HttpUtil.post("https://www.baidu.com/upload", params);

处理响应:

java 复制代码
HttpResponse response = HttpRequest.get("https://www.baidu.com").execute();
// 获取响应状态码
int status = response.getStatus();
// 获取响应头
String contentType = response.header("Content-Type");
// 获取响应体
String body = response.body();
// 获取Cookies
List<HttpCookie> cookies = response.getCookies();

设置代理:

java 复制代码
HttpRequest.get("https://www.baidu.com")
    .setProxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 8888)))
    .execute();

请求建议:

  1. 建议在生产环境中设置合适的超时时间
  2. 对于大量请求,使用 HttpUtil.createGet() 或 HttpUtil.createPost() 预创建请求对象
  3. 处理响应时注意异常处理
  4. 如果需要复用连接,考虑使用 HttpUtil.createHttp() 创建客户端

错误处理示例:

java 复制代码
try {
    HttpResponse response = HttpRequest.get("https://www.baidu.com")
        .timeout(20000)
        .execute();
    if (response.isOk()) {
        String result = response.body();
        // 处理正常响应
    }
} catch (HttpException e) {
    // 处理超时等网络异常
    e.printStackTrace();
} catch (Exception e) {
    // 处理其他异常
    e.printStackTrace();
}
相关推荐
天赐学c语言8 分钟前
Linux - windows作为client访问linux服务端
linux·网络·c++
希赛网9 分钟前
2026年华为HCIE数通认证考试,可以在哪里看课程?
网络·华为·华为认证数通学习答疑·hcie数通疑问·hcie-datacom·2026ie数通学习·hcie考试内容
2401_865721331 小时前
WEEK 3 刷题&学习记录
网络·学习·ctf
小小小米粒4 小时前
NAT 模式, 仅主机模式 Host-Only ,桥接模式 Bridge
linux·服务器·网络
Initialize-le4 小时前
WMware桥接模式配置静态IP上网
网络协议·tcp/ip·桥接模式
头疼的程序员8 小时前
计算机网络:自顶向下方法(第七版)第三章 学习分享(二)
网络·学习·计算机网络
Blurpath住宅代理8 小时前
代理协议深度解析:HTTP与SOCKS5如何科学选型?
网络·静态ip·动态代理·住宅代理
小二·8 小时前
Go 语言系统编程与云原生开发实战(第38篇)
网络·云原生·golang
昵称只能一个月修改一次。。。8 小时前
Linux系统编程:网络编程
linux·服务器·网络
野犬寒鸦8 小时前
TCP协议核心:TCP详细图解及TCP与UDP核心区别对比(附实战解析)
服务器·网络·数据库·后端·面试