我正在尝试从我的 Java 应用程序下载文件。但是因为 UrlConnection 使用 HTTP 1.1 协议(protocol),我得到一个 Tranfer Encoding: chunked 响应,在这种情况下我无法找出文件大小(未设置内容长度)。据我所知,HTTP 版本在类中是硬编码的,无法更改它。是否可以通过某种方式将版本更改回一个版本或告诉服务器在发送文件时不要使用分块编码?
编辑:我不是要检索动态内容我的应用程序是一个下载管理器。 我正在下载的文件是静态的。我检查过的其他下载器 wget、igetter、curl 使用 Http 1.0,它们从大多数服务器获取大小信息。但是我的应用程序和发布 Http 1.1 的 firefox 总是得到分块编码。我知道内容长度并不总是存在,但我希望大部分时间都能得到它。
最佳答案
Jakarta Commons HTTP 客户端包含一个“首选项架构”,允许对 HTTP 连接的细节进行一些细粒度的控制。参见 http://hc.apache.org/httpclient-3.x/preference-api.html
关于Java UrlConnection HTTP 1.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/719107/