问题描述
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>
解决方法
-
添加
implementation 'com.google.code.gson:gson:2.8.6'
到build.gradle(app) -
使用以下方法创建
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)
}