如何使用注释在改造请求中动态添加授权标头?

J.M*_*M.J 1 android kotlin retrofit2

实际上,我在我的 Android 应用程序中使用了 Retrofit 2(我使用的是 Kotlin),并且我想执行如下所示的发布请求:

@Headers("Authorization: Bearer: $Constants.TOKEN")
@POST("/task")
fun createTask(object:Object)
Run Code Online (Sandbox Code Playgroud)

当令牌是常量时,请求工作得很好,但我希望它是动态的。

经过多次搜索,我找到了如下解决方案:

@POST("/task")
fun createTask(@Header("Authorization: Bearer") authorization:String, object:Object)
Run Code Online (Sandbox Code Playgroud)

或者

@POST("/task")
fun createTask(@HeaderMap header:Map<String, String>, object:Object)
Run Code Online (Sandbox Code Playgroud)

当我尝试时,我得到了如下错误:

bad request : error at char 0x20 
Run Code Online (Sandbox Code Playgroud)

Kas*_*rma 6

我也面临同样的问题,但后来我尝试了类似的方法:

@POST("/task")
fun createTask(@Header("Authorization") authorization, object:Object)
Run Code Online (Sandbox Code Playgroud)

并附Bearer加到您传递的令牌,例如

createTask("Bearer ".plus(access_token))
Run Code Online (Sandbox Code Playgroud)

此外,:您添加的额外冒号似乎导致了错误,删除冒号也可能有效。