改造2如何拦截Cookie

时间:2018-06-29 17:29:16

标签: android cookies kotlin retrofit2

我确实遇到了Add cookies to retrofit 2 request之类的问题,但是我不知道应该放在哪里以及如何创建拦截器(如果我应该使用拦截器)。我有我的改造客户端和API来发出登录请求。

这是我的代码:

MainActivty:

   fun login(username:String, password:String) {
    mAPIService?.login(username, password)?.enqueue(object : Callback<String> {
        override fun onResponse(call: Call<String>, response: Response<String>) {
            if (response.isSuccessful()) {
                showResponse(response.body().toString())
                Log.e("Tag", "post submitted to API.")
                val test:String?= response.headers().get("set-cookie") //with this line i can catch sesion_id
            }
        }

        override fun onFailure(call: Call<String>, t: Throwable) {
            Log.e("Tag", "Unable to submit post to API. - "+t.message)
        }
    })
}

fun showResponse(response: String) {
    Log.e("Tag", response)
}

APIService:

interface APIService {

    @FormUrlEncoded
    @POST("/account/")
    fun login(@Field ("login-ident") username:String,
              @Field ("login-pwd") password:String): Call<String>

}

改装客户端:

object RetrofitClient {

    private var retrofit: Retrofit? = null

    fun getClient(baseUrl: String): Retrofit? {
        if (retrofit == null) {
            retrofit = Retrofit.Builder()
                    .baseUrl(baseUrl)
                    .addConverterFactory(ScalarsConverterFactory.create())
                    .build()
        }
        return retrofit
    }
} 

使用此代码登录不起作用,因为我还必须在APIService内的登录函数中传递带有session_id的@Header,但是我想知道的是如何截取“响应”中标头内的session_id,我不知道认为两次执行请求是最好的方法(第一个捕获会话ID,第二个添加session_id作为标头)。建议?

0 个答案:

没有答案