[英]Retrofit Interceptor not adding query param to URL
我正在尝试使用自定义interceptor
在URL中添加apikey,但是它没有在URL中添加参数,因此响应主体为null。
自定义拦截器
class CustomInterceptor : Interceptor {
override fun intercept(chain: Interceptor.Chain): Response {
val url = chain.request().url().newBuilder()
.addQueryParameter("apiKey", API_KEY)
.build()
val request = chain.request().newBuilder()
.url(url)
.build()
return chain.proceed(request)
}
}
客户
class Client {
companion object {
const val API_KEY = "123123"
private const val apiUrl = "https://www.omdbapi.com/"
fun <T> create(service: Class<T>): T {
val client = OkHttpClient.Builder()
.addInterceptor(CustomInterceptor())
.build()
return Retrofit.Builder()
.baseUrl(apiUrl)
.addConverterFactory(GsonConverterFactory.create())
.client(client)
.build()
.create(service)
}
}
}
电影
interface IMovie {
@GET("/")
fun searchMovie(@Query("s") query: String): Call<SearchResult>
}
发送请求后,响应正文为null,这是
实际网址:-https: //www.omdbapi.com/?s=Man
预期的网址:-https: //www.omdbapi.com/?s=Man&apikey=123123
首先从现有请求中创建一个新的httpUrl实例,并添加您的查询参数和值:
var request = chain.request()
val httpUrl = request.url().newBuilder().addQueryParameter("token", authToken).build()
然后更新请求:
request = request.newBuilder().url(httpUrl).build()
并继续:
return chain.proceed(request)
问题未解决?试试以下方法:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.