繁体   English   中英

改装拦截器未向URL添加查询参数

Retrofit Interceptor not adding query param to URL

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在尝试使用自定义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

1 个回复

首先从现有请求中创建一个新的httpUrl实例,并添加您的查询参数和值:

var request = chain.request()

val httpUrl = request.url().newBuilder().addQueryParameter("token", authToken).build()

然后更新请求:

request = request.newBuilder().url(httpUrl).build()

并继续:

return chain.proceed(request)

  • 当您从链中调用该请求时(在操纵后继续执行该请求),您将再次收到未修改的请求。
2 改装拦截器错误

我想将Facebook访问令牌添加到改造(2 beta 3)请求中,但未添加访问令牌。 我可以成功将拦截器添加到1.9改造中,但是在2改造中却有错误,是否有解决方案? ...

3 Spring在拦截器中向重定向的URL添加额外的查询参数

要求是将请求URL中的查询参数发送到下一个重定向URL。 有一个具有方法posthadle的拦截器,在其中需要进行更改以修改响应对象,以使请求中包含查询参数。 请告诉我们。 我试图捕获状态302,但在后处理程序中重定向状态为cat 200的情况下。 我想在拦截器方法中检测重定向 ...

4 通过拦截器在查询参数之前添加值

我有一个 id,我应该将它添加到每个 url 的路径中,这是我通过拦截器完成的。 带有查询参数的第一个端点会出现问题。 所以有了这段代码,我得到了 但应该是 任何好主意如何解决这个问题? 附言有一个 hacky 解决方案,但希望有更好的解决方案。 ...

7 如何使用 hash 向 url 添加查询参数?

我有一个 URL 字符串: http:/some.other.com/#/app/ 。 我想让它成为一个带有特定查询参数的字符串: http:/some.other.com/#/app/?my-param=whatever 我试着这样做: 我预计会有以下 URL: 但结果是: 也许我错过了一些东西 ...

8 向Spring MVC拦截器添加参数

我正在尝试通过让Spring的Interceptor的( HandlerInterceptorAdapter )PreHandle方法检查用户是否处于所需角色中,从而使我的RestAPI获得授权,以使作用域在控制器中达到所请求的操作。 但是,这要求我为每个操作(URL路径)提供所需角色的ID。 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM