gpt4 book ai didi

Android HttpURLConnection 内容长度

转载 作者:行者123 更新时间:2023-11-28 22:14:10 29 4
gpt4 key购买 nike

我正在尝试从 android 中的服务器下载文件并使用与 answer provided in this thread 非常相似的代码显示进度对话框但我无法在 HttpURLConnectiongetContentLength() 方法中获取内容长度。所有文件的内容长度为 -1。

对于同一个文件,我使用 NSHTTPURLResponseexpectedContentLength 方法在 iOS 应用程序中获得正确的内容长度。

这些方法获取 HTTP 连接/响应的内容长度的方式是否存在一些基本差异?

编辑 1:

尝试按照建议的一些答案和评论进行以下操作。

  1. Accept-Encoding header 设置为identity
  2. 以字符串形式获取内容长度(从头字段 Content-Length),然后将其转换为 long
  3. 尝试使用 conn.getContent().toString().length() 而不是 getContentLength()

这些都不适合我。

最让我困惑的是我在 iOS 中获得了内容长度,但在 Android 上却没有。

编辑 2:

这是我的 iOS 和 Android 代码进行比较 -

苹果:

NSURLRequest *request = [NSURLRequest requestWithURL:self.url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:1200.0];
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:NO];
[connection scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[connection start];

安卓:

URL url = new URL(downloadUrlString);
connection = (HttpURLConnection) url.openConnection();
connection .setRequestProperty("Accept-Encoding", "identity");
connection.connect();

我能看到的唯一区别是缓存。所以我也在 android 代码中添加了以下行,但没有任何改变。

connection.setUseCaches(true);

最佳答案

试试这个:

   HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn .setRequestProperty("Accept-Encoding", "identity");
conn.connect();

关于Android HttpURLConnection 内容长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22166555/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com