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 !

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!

  • Error de compilation de Kotlin: no se puede invocar ninguna de las siguientes funciones con los arguments suministrados
  • ¿Cuál es la diferencia básica entre fold y networkinguce en Kotlin? ¿Cuándo usar qué?
  • ¿Cómo podría dividir una cadena en una matriz en Kotlin?
  • no se pudo crear una instancia de extensión de complemento gradle
  • ¿Hay algún documento sobre modificadores de acceso en Kotlin?
  • kotlin no resuelto enlace KDoc pero a IntelliJ no le gusta la import que lo arregla
  • Problema de compilation Dagger2 en kotlin
  • Las @annotations de Kotlin repetibles no funcionan en jdk-8
  • Kotlin: los cambios realizados en super constructor se sobrescriben
  • Procesamiento de annotations con el estudio Android Kapt
  • No se puede probar la unidad en Kotlin (ExecutionException, Aapt2Exception)