下载HTML而不是文件

时间:2016-01-19 17:14:58

标签: java html file url download

我正在使用Java代码从Internet下载文件并将其保存到某个目录。

但是,代码会下载页面的HTML源代码而不是文件内容。

下面的代码说明了问题:

import java.awt.*;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;

public class JavaFileDownloadTest
{
    public static void download(String remoteURL, String targetFilePath)
            throws IOException
    {
        URL downloadableFile = new URL(remoteURL);
        ReadableByteChannel readableByteChannel = Channels.newChannel(downloadableFile.openStream());
        FileOutputStream fileOutputStream = new FileOutputStream(targetFilePath);
        fileOutputStream.getChannel().transferFrom(readableByteChannel, 0, Long.MAX_VALUE);
    }

    public static void main(String[] arguments) throws IOException
    {
        String userHome = System.getProperty("user.home");
        String fileName = "Test.txt";
        String targetFilePath = userHome + File.separator + "Downloads" + File.separator + fileName;
        download("http://bullywiiplaza.cuccfree.com/" + fileName, targetFilePath);
        Desktop.getDesktop().open(new File(targetFilePath));
    }
}

位于here的文件包含文字

Hello StackOverflow!

但是,使用上面的代码下载时,我将HTML源代码改为文件内容:

<html><body><script type="text/javascript" src="/aes.js" ></script><script>function toNumbers(d){var e=[];d.replace(/(..)/g,function(d){e.push(parseInt(d,16))});return e}function toHex(){for(var d=[],d=1==arguments.length&&arguments[0].constructor==Array?arguments[0]:arguments,e="",f=0;f<d.length;f++)e+=(16>d[f]?"0":"")+d[f].toString(16);return e.toLowerCase()}var a=toNumbers("f655ba9d09a112d4968c63579db590b4"),b=toNumbers("98344c2eee86c3994890592585b49f80"),c=toNumbers("ae71113e4baf38cee1c1aacf0ae66c00");document.cookie="__test="+toHex(slowAES.decrypt(c,2,a,b))+"; expires=Thu, 31-Dec-37 23:55:55 GMT; path=/"; document.cookie="referrer="+escape(document.referrer); location.href="http://bullywiiplaza.cuccfree.com/Test.txt?ckattempt=1";</script><noscript>This site requires Javascript to work, please enable Javascript in your browser or use a browser with Javascript support</noscript></body></html>

为什么会这样,我该如何解决?我已经尝试了各种用于下载文件的库和方法,但是所有这些都产生了同样的“错误”结果。

3 个答案:

答案 0 :(得分:0)

我认为目标网址会执行一些javascript来提供文件。这个脚本必须由一些javascript引擎解释(并执行)。

因此,您需要一些解决方案来获取真实的文件URL(而不仅仅是javascript)或集成一些javascript引擎来执行脚本代码并获得结果。

我认为这可以帮到你:Executing javascript in java - Opening a URL and getting links

或更好:

http://www.java2s.com/Code/Java/JDK-6/ExecuteJavascriptscriptinafile.htm

答案 1 :(得分:0)

我将网站托管服务商切换为this one,现在上面的代码按预期工作。

答案 2 :(得分:-1)