关于Android程序中java的HttpUrlConnection的getContentLength方法
我可以下载.apk和其他可执行文件,除非我尝试通过公司WiFi进行下载。这是我的结果矩阵 如果我没有显式设置URL连接的任何属性(使用关于Android程序中java的HttpUrlConnection的getContentLength方法,java,android,httpurlconnection,Java,Android,Httpurlconnection,我可以下载.apk和其他可执行文件,除非我尝试通过公司WiFi进行下载。这是我的结果矩阵 如果我没有显式设置URL连接的任何属性(使用setRequestProperty()),则getContentLength()返回正确的长度 但是,由于程序正在进行多线程下载,我必须使用setRequestProperty设置Range属性,如下所示: Range: bytes = 0 - TotalBytes / TheadNum //first thread Range: bytes = Total
setRequestProperty()
),则getContentLength()
返回正确的长度
但是,由于程序正在进行多线程下载,我必须使用setRequestProperty设置Range属性,如下所示:
Range: bytes = 0 - TotalBytes / TheadNum //first thread
Range: bytes = TotalBytes/ThreadNum - TotalBytes / TheadNum * 2 //second thread, and etc
当我这样做的时候,我得到了错误的结果,在上述形式的四分之一的情况下
我上一次对表格的编辑看起来正确吗?或者我应该做些修改吗?那么,在失败的情况下,你是说当你每四次(大约)得到一次坏内容长度时?还是总是这样。是您自己的多线程下载客户端代码给您带来了麻烦吗?Chrome是否可能因为您指定了proxy.pac脚本或wpad脚本或直接http代理而在公司网络(防火墙后面)中工作,但多线程客户端没有这样的功能?我不明白范围问题与公司WiFi有什么关系。是的,你上次编辑的下载结果表是我想要表达的,但是,在上面的表格中,错误的结果只有四分之一发生。我的客户端运行时间的25%不会发生错误,现在你用更好的符号改变了这些。我想我明白了,chrome总是为所有用户做一些代理,但我的客户端没有任何代理工具,我编写的客户端只在HTTP头中设置了Range属性并通过HttpUrlConnection连接。我不知道失败案例是如何发生的。是直接的互联网连接吗,它的服务器设置了一些代理工作,这样我的客户就可以工作了?范围问题不需要对公司wifi做什么,我只需要在工作中连接公司wifi。
threadNum = 2
totalFileSize = 39058483
getContentLength() = 171 // (expected correct value is 17217690)