【问题标题】:Cannot add GitHub API header "Authorization token" to GET request in Retrofit2无法将 GitHub API 标头“授权令牌”添加到 Retrofit2 中的 GET 请求
【发布时间】:2021-02-19 15:48:44
【问题描述】:

GitHub APi 文档说我需要在 header 中传递 access token

这个命令对我来说很好用,将 OAUTH_TOKEN 替换为我的。我尝试在代码中做同样的事情:

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

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

我试过这个(在 headerAuthorization: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)

【问题讨论】:

    标签: android kotlin retrofit github-api


    【解决方案1】:

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

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

    所以你需要这样做。

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

    打电话

    getAllUserRepos("token $VALID_TOKEN")
    

    【讨论】:

    • 这个答案具有误导性,因为没有涉及字符串token
    【解决方案2】:

    标题应该是:

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

    去过那里,完成that

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-27
      • 2019-10-01
      • 2021-07-22
      • 2023-03-23
      • 2020-05-10
      • 1970-01-01
      • 2017-08-10
      相关资源
      最近更新 更多