http 请求返回307

错误的原因

发现发生临时重定向的原因是我在具体的 url 后面少加了一个 /

  1. /xxx 这个发生了临时重定向请求
  2. /xxx/ 这个请求不会
    可能是因为我请求的服务器对最终请求是否添加 / 有特殊的处理,在开发中,最好由对接方实际的url请求值
    HTTP 状态码 307 Temporary Redirect 是一种临时重定向,表示客户端应该使用相同的 HTTP 方法重新发送请求到指定的新位置。

解决方案

Hutool 的 HTTP 请求工具类处理 307

可以通过设置 HttpRequest 的 setFollowRedirects 来自动处理重定向。

java 复制代码
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;

public class HttpUtilExample {
    public static void main(String[] args) {
        String url = "http://example.com"; // 替换为实际的URL

        // 发送请求,并自动跟随重定向
        HttpResponse response = HttpRequest.get(url)
                .setFollowRedirects(true) // 开启自动重定向
                .execute();

        System.out.println(response.body());
    }
}

如何手动处理重定向

可以通过读取响应头中的 Location 字段来获取新的 URL,并重新发起请求

java 复制代码
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;

public class HttpUtilExample {
    public static void main(String[] args) {
        String url = "http://example.com"; // 原始URL

        HttpResponse response = HttpRequest.get(url)
                .setFollowRedirects(false) // 手动处理重定向
                .execute();

        if (response.getStatus() == 307) {
            // 获取重定向的URL
            String redirectUrl = response.header("Location");

            // 重新请求重定向的URL
            HttpResponse redirectResponse = HttpRequest.get(redirectUrl)
                    .execute();

            System.out.println(redirectResponse.body());
        } else {
            System.out.println(response.body());
        }
    }
}
相关推荐
威联通安全存储4 分钟前
穿透宿主机内核:QNAP Virtualization Station 硬件直通解析
网络·nas
BenD-_-7 分钟前
CVE-2026-31431 Copy Fail:Linux 内核本地提权漏洞风险与缓解
linux·网络·安全
YOU OU11 分钟前
网络初识(java)
网络
医工交叉实验工坊32 分钟前
七种基因递送编辑工具原理
网络
仍然.36 分钟前
网络编程(二)---TCP字节流套接字编程
网络·网络协议·tcp/ip
前端技术1 小时前
03_网络层与IP编址:理解网络寻址的核心逻辑
服务器·网络·php
王大傻09281 小时前
WASC 团队报告的安全威胁分类
网络·安全·web安全
song150265372981 小时前
本安型LCFB-12矿用护套连接器介绍
网络
JS_SWKJ2 小时前
光闸赋能数安防护
网络
雨浓YN2 小时前
GKMLT通讯工具箱(WPF MVVM) - 07-倍福ADS通讯
网络·wpf