3

我需要使用 HTTPS 下载文件,但标准的 DownloadManager 似乎不支持 HTTPS,只支持 Http。

我进行了一些研究,发现只有一个主题,但这对我没有太大帮助。来自该主题的 alvinsj ( https://github.com/alvinsj/android-https-downloadmanager-demo ) 提出了一个解决方案,他刚刚修改了源代码的签入:

if (scheme == null || !(scheme.equals("http") ||scheme.equals("https"))) {
            throw new IllegalArgumentException("Can only download HTTP URIs: " + uri);
}

它对我来说看起来不正确,因为即使它可以工作,它也不会是 sequre。我真的需要你的帮助!一些例子,想法将不胜感激!

谢谢

4

2 回答 2

3

我找到了答案——这很简单。我们调整了我们的服务器以使用 Base64 身份验证,所以我只需要为我的请求设置一个 requestHeader:

DownloadManager.Request request = new DownloadManager.Request(downloadUri);

StringBuilder header = new StringBuilder().append("Basic ");
Pair<String, String> serverCredentials = getServerCredentials();
if (!serverCredentials.first.isEmpty()) {
try {
    header.append(EncryptionUtils.toBase64fromString(new StringBuilder().append(serverCredentials.first)
        .append(":").append(serverCredentials.second).toString()));
    request.addRequestHeader("Authorization", header.toString());
} catch (Exception e) {
    e.printStackTrace();
}
}
于 2014-04-05T19:00:02.397 回答
-1

[博客]: 在 Android 上接受 HTTPs 证书可能对您有用从 https 下载时,您需要信任所有 ssl 证书。

于 2013-10-05T12:46:21.437 回答