代码之家  ›  专栏  ›  技术社区  ›  Andrii Turkovskyi

第2部分:如何从响应中保存cookie

  •  0
  • Andrii Turkovskyi  · 技术社区  · 7 年前

    我需要从cookie中添加一些授权信息以响应下一个请求。

    它在邮递员中工作——我发出授权请求,然后是第二个请求,这很好。但若我删除cookies,第二个请求返回错误,我必须再次执行授权请求。

    val client = OkHttpClient.Builder()
        .addInterceptor(OAuthInterceptor())
    
    private class OAuthInterceptor : Interceptor {
        override fun intercept(chain: Chain): Response {
            val request = chain.request()
            com.app.logic.toLog("${chain.proceed(request).header("set-cookie")} ") // it's not that cookie what I looking for
            val headers = chain.proceed(request).headers()
            headers.names().forEach {
                val s = headers.get(it)
                com.app.logic.toLog("$it -> $s")
            }
            return chain + (Session.authConsumer?.let { consumer ->
                consumer.sign(request).unwrap() as Request
            } ?: request)
        }
    }
    

    2 回复  |  直到 7 年前
        1
  •  6
  •   Andrii Turkovskyi    7 年前

    val client = OkHttpClient.Builder()
        .cookieJar(UvCookieJar())
    
    private class UvCookieJar : CookieJar {
    
        private val cookies = mutableListOf<Cookie>()
    
        override fun saveFromResponse(url: HttpUrl, cookieList: List<Cookie>) {
            cookies.clear()
            cookies.addAll(cookieList)
        }
    
        override fun loadForRequest(url: HttpUrl): List<Cookie> =
            cookies
    }
    
        2
  •  3
  •   karandeep singh    7 年前

    你可以用这个 this gist 关于如何在收到cookie时拦截cookie,并将其发送回标题中的请求中。

    推荐文章