当前位置: 首页 > 知识库问答 >
问题:

从Java给我兼容性错误的URL下载EXE文件

长孙瑞
2023-03-14

我正在尝试从我的网站下载一个EXE文件。例如,我访问了Rarlab的网站,下载了一个新安装的64位WinRAR版本(我们都知道这是什么)

无论如何,我上传了64位的“设置”exe文件到我的网站的根文件夹,在那里它很容易达到下载(为了测试的目的)通过任何浏览器进入我的站点,我都可以成功地从rarlabs下载“setup”文件,并像执行任何其他EXE文件一样执行它。

看在上帝的份上,这是我想不明白的地方。使用这个简单的代码,我从一些其他堆栈溢出答案,我可以下载任何EXE文件从一个给定的URL。

密码...

public static void downloadEXE(URL url, String file) throws IOException {
    InputStream in = url.openStream();
    FileOutputStream fos = new FileOutputStream(new File(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();
}

其中URL和文件参数是...

URL url = new URL("http://www.website.com/winrar-x64-540.exe");
String file = "c:\\Users\\..\\Documents\\winrar-x64-540.exe";

是的,这将文件从我的网站下载到我的文档文件夹没有任何错误,但当我运行它,我得到这个错误...

链接到错误图像

除此之外,我决定尝试使用相同的代码下载相同的64位EXE“设置”文件,但这次是从官方站点rarlabs下载的。你可以相信我的话,我使用了正确的URL,因为这一次我不仅下载了EXE文件使用这段代码,而且还能够成功运行它!

让我怀疑我的网站有问题,而不是EXE文件?我还应该提到我发现的一个非常重要的发现,它很可能会有所帮助。我决定比较从工作的EXE文件的属性和破碎的生病的一个。工作的一个是2.07MB的大小,而坏掉的一个是惊人的375字节!坏掉的exe与工作exe的属性根本不匹配。

看到这两个文件的比较,我认为我的网站没有错,因为我可以通过任何浏览器成功下载并启动我的文件,但代码是错误的。

如果你想要弄清楚这个问题,请问我任何问题。让我知道我在哪里需要具体说明。谢谢大家。:)

共有1个答案

班景龙
2023-03-14

您可能没有下载任何有用的东西,也许服务器只是拒绝了您的请求,而您将其存储为文件?

使用Java码下载的文件大小是多少?和你期望的文件一样吗?

试着用记事本打开它,看看它实际上是不是一个exe(一些随机的ASCII符号,而不是HTML,你会知道区别)。

服务器拒绝您的请求并返回HTML的情况下,您可能需要在请求中设置一些内容(比如cookies--您可能需要登录以获得该内容、用户代理属性或其他内容)尝试查看从浏览器完成通信时的外观,运行firebug或其他内容,激活network选项卡并查看请求的外观。

 类似资料:
  • 问题内容: 我正在制作一个将从URL下载文件的程序。总会开始下载,但未完成。例如,如果文件大小为3 MB,则程序仅下载文件大小的一半,因此我无法打开下载的文件。但是程序说文件成功下载了。 那么我该如何解决呢?应该使用其他方式下载吗? 问题答案: 您由于 您正在阅读两次,只写一次。 您需要做的是 这是您的完整代码

  • Java 兼容性 当我们写的Scala代码被Java调用时,我们要确保从Java来用仍然习惯。这常常不需要额外的努力——class和纯的trait等价于Java的中的对应类型 —— 但有时需要提供独立的Java API。一种感受你的库中的Java API好的方式是用Java写单元测试(只是为了兼容性);这也确保了你的库中的Java视图保持稳定,在这一点上不会随着时间因Scala编译器的波动而影响。

  • 所以,我刚刚创建了一个新项目,在添加任何新库或任何东西之前,我刚刚添加了Firebase库,一旦我同步了gradle,它就会给我一个错误,说混合android库会导致appcompat库出现问题。 我做错了什么?我为什么会犯这样的错误?我该如何摆脱它? 以下是我的gradle文件的源代码:

  • 问题内容: 我用pygame代码制作了一个MP3播放器: 我尝试使用以下代码将其放入exe: 当我运行mp3player.exe时,出现一堆导入错误: 有人知道怎么修这个东西吗? 当我编译所有内容时,都会出现此错误: 问题答案: 解决方案是将其添加到主源文件的顶部。之后,任何打包程序都应工作。我在使用cx_Freeze,py2exe和pyInstaller时遇到了此问题。这是一个严重的错误,在尝试

  • 我的python3代码: 它将内容保存在metadat.pdf但那不是pdf的真正内容,它是这个html页面: 任何帮助,我如何才能保存文件的真实内容,而不是这个html?它应该是真正的pdf,当我下载它是jsut这个html页面 更新: 当我使用Python会话时,从服务器的一个NSWER:

  • 当我第一次调用方法时,它成功地下载了文件,但我得到了以下错误: https://madrasty.dev.ibtdi.work/public/reports/15287105135b1e4571f2596-new.pdf(函数)错误:responseSerializationFailed(AlamoFire.Aferror.ResponseSerializationFailureRereason.