【发布时间】:2021-09-13 14:59:19
【问题描述】:
所以,我的目标是将api key 嵌入到我的Retrofit 对象中,这样我就不需要在每个请求函数 中手动将其作为查询参数附加,然后我做了以下(学习:https://proandroiddev.com/headers-in-retrofit-a8d71ede2f3e):
private val interceptor = Interceptor { chain ->
val newRequest = chain.request().newBuilder().run {
addHeader("api_key", Constants.API_KEY)
build()
}
chain.proceed(newRequest)
}
private val okHttpClient = OkHttpClient.Builder().run {
connectTimeout(15, TimeUnit.SECONDS)
readTimeout(15, TimeUnit.SECONDS)
addInterceptor(interceptor) //<- apply Interceptor
build()
}
//apply the okHttpClient to my Retrofit object...
但它失败并给出了这个错误:HTTP 403 Forbidden。
PS:在添加此 Interceptor 之前一切正常
之前:
@GET("neo/rest/v1/feed")
suspend fun getAsteroidsResult(
@Query("start_date") startDate: String,
@Query("end_date") endDate: String,
@Query("api_key") apiKey: String = Constants.API_KEY
): ResponseBody
【问题讨论】:
-
能分享一下之前是怎么添加api_key的吗?
-
@eimmer 已更新。
-
您的第一种方法是将 api_key 添加为查询参数。第二种方法是将其添加为标题。她们不一样。在这里阅读更多。 stackoverflow.com/questions/40492782/…
-
@eimmer 但是我提到的那篇文章呢?
-
这篇文章似乎只概述了如何向标题添加值。我错过了一些相关的东西吗?
标签: android retrofit retrofit2 okhttp