Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android DownloadManager在添加“后返回错误400错误请求”;“授权”;请求头_Android_Authorization_Android Download Manager_Http Error_Bad Request - Fatal编程技术网

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

Android DownloadManager在添加“后返回错误400错误请求”;“授权”;请求头,android,authorization,android-download-manager,http-error,bad-request,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(DownloadM

下载工作正常,代码如下:

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错误请求

我所尝试的:

  • 我在改装标题中使用了标记-效果良好
  • 我尝试从公共URI下载,比如“-工作正常
  • 我试过了
因为myAuthToken中只有一个“”-错误403禁止 (这似乎不是问题,因为这个答案中也有一个“”:)

  • 我试过了
错误403禁止

  • 使用错误/随机字符串作为令牌-错误403禁止
  • 我在这里读到错误400可能与访问令牌相连接:“如果此特定会话令牌与来自不同客户端的另一个请求的会话令牌相匹配,服务器/应用程序可能会认为这是恶意行为,并生成400错误请求错误代码。”- 但我没有 有没有办法解决这个问题
  • 我发现在Apple中有保留的标题:“如果你为其中一个保留标题设置了一个值,系统可能会忽略你设置的值,或者用自己的值覆盖它,或者干脆不发送它。”

    在Android中,“授权”标题也可能是非文档保留的吗?


目前我的想法已经没有了,所以我非常感谢您的建议。

我成功地得到了这个错误消息:只允许一个身份验证机制;仅应指定X-Amz-Algorithm查询参数、签名查询字符串参数或授权标头。问题是链接是重定向,下载管理器在第二个请求中传递“授权”标头。(下载管理器不能很好地处理重定向)。我解决了使用禁止重定向发出请求、获取实际下载位置并在下载请求中使用此位置而不使用“授权”标题的问题;仅应指定X-Amz-Algorithm查询参数、签名查询字符串参数或授权标头。问题是链接是重定向,下载管理器在第二个请求中传递“授权”标头。(下载管理器不能很好地处理重定向)。我解决了使用禁止重定向发出请求、获取实际下载位置并在下载请求中使用此位置而不使用“授权”头的问题。
myAuthToken.replace(" ", "%20");
String encodedToken = Base64.encodeToString(myAuthToken.getBytes(), Base64.DEFAULT);