Android Kotlin – Volley Código de respuesta inesperada 500

Hice REST API con Django Rest Framework. Actualmente, estoy trabajando en una aplicación mobile para mi sitio. Cuando hago la request POST (es mi segunda request POST en mi aplicación) recibo este error:

E / Volley: [385] BasicNetwork.performRequest: código de respuesta inesperado 500 para http://laude.ct8.pl/api/user/data/aktualizacja/

Aquí está mi código:

private val UPDATE_URL = "http://laude.ct8.pl/api/user/data/aktualizacja/" private var volleyRequest: RequestQueue? = null private val jsonObj = JSONObject() volleyRequest = Volley.newRequestQueue(this) private fun aktualizacja() { jsonObj.put("librus_user", usernameEdit.text) jsonObj.put("librus_pswd", passwordEdit.text) val req = JsonObjectRequest(Request.Method.POST, UPDATE_URL, jsonObj, Response.Listener { response -> Toast.makeText(this, response.toString(), Toast.LENGTH_LONG).show() val user = Intent(this, UserActivity::class.java) startActivity(user) }, Response.ErrorListener { error -> Toast.makeText(this, error.toString(), Toast.LENGTH_LONG).show() }) req.retryPolicy = DefaultRetryPolicy(60000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT) volleyRequest!!.add(req) } 

Cuando uso los mismos datos en mi website no obtengo ningún error, solo lo obtengo en una aplicación mobile. Gracias por la ayuda !

Solutions Collecting From Web of "Android Kotlin – Volley Código de respuesta inesperada 500"

El error del server es causado por usted haciendo JsonObjectRequest y pasando un JsonObject como un cuerpo de parámetro mientras su server los requiere como Strings ( ¡Observé el enlace! ). La solución rápida es usar StringRequest y pasar sus parameters como una cadena como! ¡Comtesting el código a continuación para entender la idea!

 private val UPDATE_URL = "http://laude.ct8.pl/api/user/data/aktualizacja/" private var volleyRequest: RequestQueue? = null volleyRequest = Volley.newRequestQueue(this) private fun aktualizacja() { val req = object : StringRequest(Request.Method.POST, UPDATE_URL, Response.Listener { response -> Toast.makeText(this, response, Toast.LENGTH_LONG).show() val user = Intent(this, UserActivity::class.java) startActivity(user) }, Response.ErrorListener { e -> Toast.makeText(this, error.toString(), Toast.LENGTH_LONG).show() }) { public override fun getParams(): Map<String, String> { val params = HashMap<String, String>() params.put("username", usernameEdit.text) params.put("password", passwordEdit.text) return params } } req.retryPolicy = DefaultRetryPolicy(60000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT) volleyRequest!!.add(req) } 

También debe tener en count que la respuesta también es una String por lo que si la necesita como un object JSONOject .

Disculpa si recibes algún error en el código. ¡Escribí el código en Java y lo convertí a Kotlin usando Android Studio! ¡Espero que tengas la idea general!