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