以编程方式完成下载时始终重定向到不同的URL(Java)

时间:2013-03-10 14:20:45

标签: java redirect download apache-commons

这是我需要做的。 我需要从市场上下载一堆apks。 使用Multi-apk工具分析每个文件是否包含广告并重新压缩(这不是问题,所以我不会再进一步​​讨论)

现在,我正在做我将从特定市场下载apk的部分。 我获取页面的源代码并获取以.APK

结尾的所有URL

从页面中提取每个URL后,我使用commons io下载它。 但是,每当下载完成时,我都注意到它们的大小都相同。这让我觉得它正在下载同一个文件。

我尝试使用wget,我发现所有的网址都被重定向到一个网址。

当我通过单击“下载到PC”按钮进入页面并下载同一个文件时,它可以正常工作并下载我想要的文件。

有什么方法可以下载我想要的文件吗?我可以修改代码以获取正确的APK吗?这是网络编程的能力之一吗?

以下是下载APK的代码

private static void downloadSample(String directLink) throws Exception
    {
        String[] getAPKName = directLink.split("/");
        System.out.println(getAPKName[getAPKName.length -1]);
        String APKName = getAPKName[getAPKName.length -1];        
        org.apache.commons.io.FileUtils.copyURLToFile(new URL(directLink), new File("C:\\Users\\Documents\\NetBeansProjects\\JavaApplication21\\APK\\"
+ APKName));

    }

1 个答案:

答案 0 :(得分:1)

  

有什么方法可以下载我想要的文件吗?我可以修改代码以获取正确的APK吗?这是网络编程的能力之一吗?

从技术上讲,是的,有一种方法,但我们无法告诉你它是什么。基本上,您已经弄清楚了您的Java请求是什么导致服务器在您从浏览器发出请求时采取不同的行为。使用FireBug(或等效的)查看浏览器请求将是一个良好的开端。检查您正在下载的文件(从Java)以查看它包含的内容也是值得的。它可能是错误消息或通知或其他内容。

但是,您还应该考虑为什么已设置服务器来执行此操作。

  • 您是否查看了网站的条款和条件?
  • 你按照他们做的是什么?
  • 你有权做你正在做的事吗?