Java 实际下载链接

Java 实际下载链接,java,url,browser,download,httpurlconnection,Java,Url,Browser,Download,Httpurlconnection,我正在用java开发下载管理器。 我的下载管理器可以很好地处理一些下载链接。 当复制网站中给出的下载链接并在我的下载程序中使用它时,会产生不适当的结果。 主要问题是下载文件的实际URL。 当我直接在chrome中下载该文件时,我看到chrome使用的链接与我从网站复制的链接不同。 我复制的URL实际上会重定向到其他URL,这是实际的下载链接。 如何解决此问题,使我的下载程序工作正常 我使用下面的代码作为建议,但它也不工作 private HttpURLConnection checkForRed

我正在用java开发下载管理器。
我的下载管理器可以很好地处理一些下载链接。
当复制网站中给出的下载链接并在我的
下载程序中使用它时,会产生不适当的结果。
主要问题是下载文件的实际
URL

当我直接在chrome中下载该文件时,我看到chrome使用的链接与我从网站复制的链接不同。
我复制的
URL
实际上会重定向到其他
URL
,这是实际的下载链接。
如何解决此问题,使我的
下载程序
工作正常

我使用下面的代码作为建议,但它也不工作

private HttpURLConnection checkForRedirect(URL url) throws IOException{
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        //conn.setReadTimeout(5000);
        conn.addRequestProperty("Accept-Language", "en-US,en;q=0.8");
        conn.addRequestProperty("User-Agent", "Mozilla");
        conn.addRequestProperty("Referer", "google.com");

        System.out.println("Request URL ... " + url);

        boolean redirect = false;

        // normally, 3xx is redirect
        int status = conn.getResponseCode();
        if (status != HttpURLConnection.HTTP_OK) {
            if (status == HttpURLConnection.HTTP_MOVED_TEMP
                    || status == HttpURLConnection.HTTP_MOVED_PERM
                    || status == HttpURLConnection.HTTP_SEE_OTHER) {
                redirect = true;
            }
        }

        System.out.println("Response Code ... " + status);
        if (redirect) {

            // get redirect url from "location" header field
            String newUrl = conn.getHeaderField("Location");

            // get the cookie if need, for login
            String cookies = conn.getHeaderField("Set-Cookie");

            // open the new connnection again

            conn = (HttpURLConnection) new URL(newUrl).openConnection();
            conn.setRequestProperty("Cookie", cookies);
            conn.addRequestProperty("Accept-Language", "en-US,en;q=0.8");
            conn.addRequestProperty("User-Agent", "Mozilla");
            conn.addRequestProperty("Referer", "google.com");

            System.out.println("Redirect to URL : " + newUrl);

        }
        return conn;
    }

我作为参数传递的URL是,我希望为您的HttpUrl连接重定向URL

。您可以按照所示的重定向进行操作

下载管理器使用什么?您的下载管理器使用的是Apache HttpClient还是普通HttpURLConnection?谢谢:)我将尝试我们的解决方案—关于Apache HttpClient,我还不知道一个问题???我应该了解它吗??它对downloader更有效吗???Apache HttpClient更好,除了这里描述的少数情况之外。通过检查这里的一些示例,您可以看到与HttpURLConnection相比,使用它是多么方便。您在代码中遇到了什么问题?您发布的第一个URL需要身份验证,我猜您在通过HttpUrlConnection连接时没有进行身份验证。