Java 当我访问某个URL时,如何下载在web浏览器中自动下载的文件?

Java 当我访问某个URL时,如何下载在web浏览器中自动下载的文件?,java,Java,我有一个网址。如果我在Chrome中运行此URL,Skype的EXE文件将开始下载。但是,如果我编写代码来下载文件,我就无法这样做。这是我的密码: public static void saveFile(URL url, String file) throws IOException { System.out.println("opening connection"); InputStream in = url.openStream(); FileOutputStream

我有一个网址。如果我在Chrome中运行此URL,Skype的EXE文件将开始下载。但是,如果我编写代码来下载文件,我就无法这样做。这是我的密码:

public static void saveFile(URL url, String file) throws IOException {
    System.out.println("opening connection");
    InputStream in = url.openStream();
    FileOutputStream fos = new FileOutputStream(new File(file));

    System.out.println("Reading file...");
    int length = -1;
    byte[] buffer = new byte[1024]; // Buffer for portion of data from

    // Connection
    while ((length = in.read(buffer)) > -1) {
        fos.write(buffer, 0, length);
    }

    fos.close();
    in.close();
    System.out.println("File was downloaded");
}

public static void main(String args[])
{
    try
    {
         URL url = new URL("http://www.skype.com/en/download-skype/skype-for-windows/downloading/");
         String fileName = "C:/SETUP/skype.exe";
         saveFile(url, fileName);
    }
    catch(IOException e)
    {
        e.printStackTrace();
    }
}

您指向了错误的URL。此时,您只能获得HTML页面,您可以在其中下载exe


引用exe的直接URL是:

将outputfile流包装到ObjectOutputStream中执行代码时会发生什么?哪个异常是抛出的,或者它没有说什么?您还应该将C:/SETUP/skype.exe更改为C:\\SETUP\\skype.exe我认为问题在于这不是exec文件的url。使用Firefox的开发者工具,它表示exec在
http://download.skype.com/31518e1f630fc898ce3d1cd73025cf76/SkypeSetup.exe
和可能这个url是自动生成的,所以问题很复杂。重复问题:它可以工作。我在哪里可以得到任何软件的可执行文件的url?很高兴它工作了!你应该投票决定答案!;)无论如何,你不能得到“任何软件”的可执行文件。此URL()是下载EXE的登录页。很多软件都使用这些登录页,并用javascript开始倒计时。当倒计时结束时,您将开始下载实际的exe。由于倒计时可能会失败(例如:您禁用了浏览器上的javascript),因此它们也会为您提供指向可执行文件的直接链接。在skype页面中有一个链接“重试”,我刚刚给了你这个链接!;)不可能从登录页下载可执行文件吗?嗯,不可能。您可以尝试使用SeleniumWebDriver()或其他“服务器端浏览器”。Selnium允许您浏览网页,也可以执行其javascript。但您必须更深入地了解他们的API,看看它是否适合您的需要。