Android 如何修复';AuthFailureError';截击

Android 如何修复';AuthFailureError';截击,android,httprequest,android-volley,Android,Httprequest,Android Volley,我已经创建了一个android应用程序,可以从服务器获取一些文本并以列表格式显示。就像电报中的频道。 我使用后台服务在服务器上每隔60秒检查一次新邮件。 在对该bg服务进行第一次测试后,一切正常,新消息通知工作正常,但 2或3天后,截击请求总是(在同一设备上)抛出AuthFailureError 现在它可以在新设备上运行,但只运行几天。 我的服务器似乎在多次请求后阻塞了客户端 服务器是LinuxCPanel 我已经检查了Volley请求类上的getHeaders方法: @Override pub

我已经创建了一个android应用程序,可以从服务器获取一些文本并以列表格式显示。就像电报中的频道。 我使用后台服务在服务器上每隔60秒检查一次新邮件。 在对该bg服务进行第一次测试后,一切正常,新消息通知工作正常,但 2或3天后,截击请求总是(在同一设备上)抛出AuthFailureError

现在它可以在新设备上运行,但只运行几天。 我的服务器似乎在多次请求后阻塞了客户端

服务器是LinuxCPanel

我已经检查了Volley请求类上的getHeaders方法:

@Override
public Map getHeaders() throws AuthFailureError {
    Log.i("MYTAG", "Hey!");        

    HashMap headers = new HashMap();
    headers.put("Authorization", "Bearer " + DataCenter.loadToken(context));
    return headers;
}

但是它没有记录任何东西。

几天后,我终于解决了它。
此问题由两部分组成:

1) 由于一些未知的原因,apache没有将“Authorization”头传递到$\u服务器; 所以你有两个选择:

a) 直接从apache服务器获取标题:

$headers = apache_request_headers();
$authHeader = $headers['Authorization'];
b) 将此行添加到.htaccess

RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
我两者都用过



2)仅当身份验证失败时才设置“WWW-Authenticate”头。

之前:

<?php

header("WWW-Authenticate: Bearer realm=\"example\", token_type=\"JWT\"");

if($AuthorizationResult){
    http_response_code(200);
}
else{
    http_response_code(401);
}

?>

之后:

<?php

if($AuthorizationResult){
    http_response_code(200);
}
else{
    http_response_code(401);
    header("WWW-Authenticate: Bearer realm=\"example\", token_type=\"JWT\"");
}

?>