我需要使用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);
}
对我来说这看起来不正确,因为尽管它会起作用,但它不会成为现实。 我真的需要你的帮助!一些例子,想法将不胜感激!
感谢
答案 0 :(得分:2)
我找到了答案 - 这很简单。我们将服务器调整为使用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();
}
}
答案 1 :(得分:-1)
[博客]:Accepting a certificate for HTTPs on Android它可能对您有用 从https下载时,您需要信任所有ssl证书。