从JWT服务器中获取响应

时间:2020-10-19 19:13:21

标签: kotlin jwt android-volley bearer-token

我有以下代码,在其中验证JWT令牌(带有齐射):

private fun validateToken(token: String) {

        var queue = Volley.newRequestQueue(this)

        val yourUrl = "https://mysite/wp-json/jwt-auth/v1/token/validate"

        val parameters = JSONObject()
        try {
            parameters.put("username", "abc@test.com")
            parameters.put("password", "12345678")
        } catch (e: java.lang.Exception) {
        }
        val request: JsonObjectRequest =
            object : JsonObjectRequest(
                Method.POST, yourUrl, parameters,
                Response.Listener { response -> Log.i("onResponse", response.toString()) },
                Response.ErrorListener { error -> Log.e("onErrorResponse", error.toString()) }) {
                @Throws(AuthFailureError::class)
                override fun getHeaders(): Map<String, String> {
                    val headers: MutableMap<String, String> = HashMap()
                    // Basic Authentication
                    //String auth = "Basic " + Base64.encodeToString(CONSUMER_KEY_AND_SECRET.getBytes(), Base64.NO_WRAP);
                    headers["Authorization"] = "Bearer $token"
                    return headers
                }




            }
        queue.add(request)
    }

它对我有用,我从服务器(在Log.i中)获得了正确的响应:

{"code":"jwt_auth_valid_token","data":{"status":200}}

我的问题是如何在我的代码中将status: 200保存在变量中,以便随后应用“如果status == 200”,如果为200,则将其发送到另一个活动。 / p>

1 个答案:

答案 0 :(得分:0)

  1. 添加implementation 'com.google.code.gson:gson:2.8.6'到build.gradle(app)

  2. 使用以下方法创建Model.tk

    data class dataServer (
    
        @SerializedName("code") val code : String,
        @SerializedName("data") val data : Data
    )
    
    data class Data (
    
            @SerializedName("status") val status : Int
        )
    
    

3. Update code:




    private fun validateToken(token: String) {
    
            var queue = Volley.newRequestQueue(this)
    
            val yourUrl = "https://myweb/wp-json/jwt-auth/v1/token/validate"
    
            val parameters = JSONObject()
            try {
                parameters.put("username", "abc@test.com")
                parameters.put("password", "12345678")
            } catch (e: java.lang.Exception) {
            }
            val request: JsonObjectRequest =
                object : JsonObjectRequest(
                    Method.POST, yourUrl, parameters,
                    Response.Listener {
                        response ->
                        Log.i("onResponse", response.toString())
    
    
                        val gson = Gson()
                        val dataToken   = gson.fromJson(response.toString(), dataServer::class.java)
    
                        val status = dataToken.data.status
    
             
                        println(status)
                       // use here if then
       
    
                    },
                    Response.ErrorListener { error -> Log.e("onErrorResponse", error.toString()) }) {
                    @Throws(AuthFailureError::class)
                    override fun getHeaders(): Map<String, String> {
                        val headers: MutableMap<String, String> = HashMap()
                        // Basic Authentication
                        //String auth = "Basic " + Base64.encodeToString(CONSUMER_KEY_AND_SECRET.getBytes(), Base64.NO_WRAP);
                        headers["Authorization"] = "Bearer $token"
                        return headers
                    }
    
    
    
    
                }
            queue.add(request)
        }