gpt4 book ai didi

java - 无法从java中的缩短网址获取扩展网址

转载 作者:太空宇宙 更新时间:2023-11-04 10:28:41 25 4
gpt4 key购买 nike

我有以下代码来扩展缩短的网址。

import java.io.IOException;

import java.net.HttpURLConnection;
import java.net.Proxy;
import java.net.URL;
public class ExpandUrl {

public static void main(String[] args) throws IOException {
String shortenedUrl = "2q3GMg0"; //read note at the bottom.
String expandedURL = ExpandUrl.expand(shortenedUrl);
System.out.println("expanded url is : " + expandedURL);
}

public static String expand(String shortenedUrl) throws IOException {
URL url = new URL(shortenedUrl);
// open connection
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(Proxy.NO_PROXY);

int status = 0;
try {
status = httpURLConnection.getResponseCode();
} catch (IOException e) {
e.printStackTrace();
}

System.out.println("status is " + status);

// stop following browser redirect
httpURLConnection.setInstanceFollowRedirects(false);

// extract location header containing the actual destination URL
String expandedURL = httpURLConnection.getHeaderField("Location");
httpURLConnection.disconnect();

return expandedURL;
}
}

该代码扩展了某些 url,但对其他一些 url 返回 null。例如:它扩展了 2q3GMg0,但当我使用 9mglq8 时返回 null,尽管状态代码为 200。我已经测试了这两个网址。两者都是有效的并且具有扩展形式。

注意: Stackoverflow 不允许我在正文中放置缩短的链接,因此我刚刚提到了哈希码。

编辑:我得到 null 的链接没有 Location header 字段。在这种情况下,如何检索原始展开的链接?

status is 200
Key: null value: [HTTP/1.1 200 OK]
Key: X-Cache value: [Hit from cloudfront]
Key: Server value: [Apache]
Key: Connection value: [keep-alive]
Key: Last-Modified value: [Sat, 12 May 2018 12:06:48 GMT]
Key: Date value: [Sat, 12 May 2018 12:11:30 GMT]
Key: Via value: [1.1 587a74dd892ff33ecf276aa569c8b68a.cloudfront.net (CloudFront)]
Key: X-Frame-Options value: [SAMEORIGIN]
Key: Accept-Ranges value: [bytes]
Key: Cache-Control value: [max-age=120, s-maxage=120, public]
Key: X-Amz-Cf-Id value: [-p1_VjHmvcGCI1PbQelSHpUectu_5NfCFUnPu_NUHCJ9_2lS2rTmlA==]
Key: Vary value: [Accept-Encoding]
Key: X-XSS-Protection value: [1]
Key: Content-Length value: [186539]
Key: Age value: [108]
Key: Content-Type value: [text/html]

任何形式的帮助将不胜感激。

最佳答案

如果状态代码为 200,则不会发生重定向,并且 header 中不会有 Location 字段,因此当您尝试访问 Location 键的值时会返回 null。您可以使用httpURLConnection.getURL()获取扩展的URL。

如果状态代码为 301302,则存在重定向,并且 header 中会有一个 Location 字段。您可以获得重定向的 URL:

String ExpandedURL = httpURLConnection.getHeaderField("位置");

就像你所做的那样。

希望这有帮助。

关于java - 无法从java中的缩短网址获取扩展网址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50303792/

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