gpt4 book ai didi

java - 重定向到其他 URL 的 URL 是否始终包含字符串 '=http' ?

转载 作者:行者123 更新时间:2023-12-02 06:23:12 24 4
gpt4 key购买 nike

我正在尝试使用 Java/HttpURLConnection 确定给定 URL 的最终位置。

代码非常简单,将字符串“ref”作为输入并返回 URL 字符串作为输出:

        HttpURLConnection con = (HttpURLConnection)new URL(ref).openConnection();
con.setInstanceFollowRedirects(true);
con.setRequestProperty("User-Agent","");
if (con.getResponseCode()/100 == 3)
{
String target = con.getHeaderField("Location");
if (target != null)
return target;
}
return con.getURL().toString();

问题是在某些情况下,我得到的结果包含另一个重定向。

不仅当响应代码为 3xx 时会发生这种情况,当响应代码为 2xx 时也会发生这种情况。

我需要某种确定性的方法来决定是否应该将输出作为输入发送到相同的方法(上面)。

当且仅当结果包含字符串“=http”时,我可以安全地假设结果包含重定向吗?

更新:

澄清上述问题:

它不是“我的”服务器,它可以是我通过 HTTP 连接到的“外面”的任何服务器。

我在查找包含重定向的 URL 的登陆页面时遇到了几个问题:

  1. 有时响应代码为 3xx,但位置 header 为空。
  2. 有时响应代码为 3xx,并且位置 header 包含有效的 URL:
    • 有时此网址是“最终网址”。
    • 有时此网址还包含另一个重定向。
  3. 有时响应代码是 2xx,但 URL 包含另一个重定向。

我发现上面的代码是访问给定 URL 的登陆页面的最简单方法,但是,在极少数情况下,我仍然会得到包含另一个重定向的 URL。

最佳答案

也许我误解了你的问题,但是 Location header 使用如下

For 201 (Created) responses, the Location is that of the new resource which was created by the request. For 3xx responses, the location SHOULD indicate the server's preferred URI for automatic redirection to the resource. The field value consists of a single absolute URI.

Location = "Location" ":" absoluteURI

如果您的服务器没有以这种方式运行,那么它就没有以标准 HTTP 方式运行,并且作为客户端,您将需要一些带外信息才能使用它。

关于java - 重定向到其他 URL 的 URL 是否始终包含字符串 '=http' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20817232/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com