【问题标题】:Unshorten URL in Android在 Android 中取消缩短 URL
【发布时间】:2020-05-12 17:36:15
【问题描述】:

我想使用 java 找到这些类型的链接的最终 URL。它们不是诸如 bit.ly 或 goo.gl 之类的短链接,而是包含在另一个 URL 中的 URL。

这是我想取消缩短的链接类型。

原网址:https://www.google.com/aclk?sa=l&ai=DChcSEwj0iN_6y6PnAhUPwN4KHfPWB_EYABABGgJ3Yg&sig=AOD64_1QciSaXgHfqYgp_pg90gmtmuswtA&ctype=5&q=&ved=0ahUKEwifgNj6y6PnAhUMmhQKHdF7AKkQ1ikIPw&adurl=

最终网址:https://www.schuh.co.uk/kids/youth-nike-air-force-1-white-trainers/2701041020/?gclid=Cj0KCQiAsbrxBRDpARIsAAnnz_M_rzRXEUXD0pW0GeXUGrqHCDSqg-p0cHwQGqKiQ2OPFC5w7iiOCYoaAjfYEALw_wcB

如何检索 Schuh URL?

非常感谢您的帮助。

【问题讨论】:

标签: java android url


【解决方案1】:

您需要在 url 上执行请求,允许跟随重定向,然后获取结果 url。

像这样:

import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

import java.io.IOException;


public class UrlRetriever {

    private final OkHttpClient httpClient;

    public UrlRetriever(OkHttpClient httpClient) {
        this.httpClient = httpClient;
    }


    public String getRootUrl(String url) {
            try (Response response = httpClient.newCall(buildRequest(url)).execute()) {
                String sourceUrl = response.request().url().toString();

                return sourceUrl;            
            } catch (IOException e) {
                System.err.println("Url retrieval failed for " + url + " (returning self), reason: " + e.getMessage());
                return url;
            }
    }


    private Request buildRequest(String url) {
        try {
            return new Request.Builder()
                    .head()
                    // Act like a browser, because Medium (and maybe others) don't redirect correctly otherwise
                    .header("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36")
                    .url(url)
                    .build();
        } catch (IllegalArgumentException e) {
            System.err.println("Url retrieval failed for " + url + ". reason: " + e.getMessage());
            throw e;
        }
    }
}

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2011-05-11
  • 2020-06-10
  • 2011-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-12
相关资源
最近更新 更多