添加“授权”请求标头后,Android DownloadManager返回错误400错误请求

时间:2020-06-10 19:56:21

标签: android authorization android-download-manager http-error bad-request

使用以下代码,下载工作正常:

DownloadManager.Request request = new DownloadManager.Request(Uri.parse(downloadUri));
        request.addRequestHeader("Cookie", cookie);
        request.allowScanningByMediaScanner();
        request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_HIDDEN);
        request.setDestinationUri(Uri.fromFile(new File(localPath)));

但是我们不得不切换到授权令牌而不是cookie,所以我替换了这一行:

        request.addRequestHeader("Cookie", cookie);

与此:

        request.addRequestHeader("Authorization", myAuthToken);

现在它返回状态失败,原因为 400错误请求

我尝试过的事情:

myAuthToken.replace(" ", "%20");

因为myAuthToken中只有一个“”-错误 403禁止 (这似乎没有问题,因为此答案中也包含“”:https://stackoverflow.com/a/25677680/10227935

  • 我尝试了
String encodedToken = Base64.encodeToString(myAuthToken.getBytes(), Base64.DEFAULT);

错误403禁止

  • 使用错误/随机字符串作为令牌-禁止错误403
  • 我在这里已经读到错误400可能与访问令牌有关:“如果此特定会话令牌与来自不同客户端的另一个请求的会话令牌匹配,则服务器/应用程序可能会发现这是恶意行为,产生一个400错误的请求错误代码。” -- https://airbrake.io/blog/http-errors/400-bad-request,但我没有 任何解决方法的想法
  • 我发现在Apple中有保留的标头:“如果您为这些保留的标头之一设置了值,系统可能会忽略您设置的值,或用自己的值覆盖它,或根本不发送。” -https://developer.apple.com/documentation/foundation/nsurlrequest#1776617

    是否可能在Android中也未记录“授权”标头?

目前我的想法已经用完了,所以我非常感谢任何建议。

0 个答案:

没有答案