无法在Retrofit2中将GitHub API标头“授权令牌”添加到GET请求

时间:2020-11-06 22:53:10

标签: android kotlin retrofit github-api

GitHub APi文档说我需要在 header 中传递访问令牌enter image description here

通过替换OAUTH_TOKEN可以使用此命令。我尝试在代码中做同样的事情:

    @GET("/user/repos")
    fun getAllUserRepos(
        @Header("Authorization: token") accessToken: String
    ): Call<List<RepoJson>>

但是当我在 enqueque onFailure 中遇到错误时:标头名称中的意外字符0x20出现在14:授权:令牌。然后,我删除空间,删除标头 Authorization: token 之间的空间,并从响应中获得 Unauthorized 消息> onResponce

我尝试了此操作(也在 header 中的 Authorization: token 之间留有空格):

    @Headers("Authorization: token MY_VALID_TOKEN")
    @GET("/user/repos")
    fun getAllUserRepos(): Call<List<RepoJson>>

它成功执行(通过入队)。

我的API:

val api: GiHubApi = Retrofit.Builder()
            .baseUrl("https://api.github.com")
            .addConverterFactory(GsonConverterFactory.create())
            .build()
            .create(GitHubApi::class.java)

2 个答案:

答案 0 :(得分:2)

标题应为:

@GET("/user/repos")
fun getAllUserRepos(
    @Header("Authorization") accessToken: String
): Call<List<RepoJson>>

在那儿完成that

答案 1 :(得分:0)

根据文档, key =“ Authorization”和value =“ token VALID_TOKEN”

在改造中, 您需要将密钥传递给@GET。但是您正在传递“授权:令牌”

所以您需要这样做。

@GET("/user/repos")
    fun getAllUserRepos(
        @Header("Authorization") accessToken: String
    ): Call<List<RepoJson>>

致电

getAllUserRepos("token $VALID_TOKEN")