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 al procesar la anotación con Kapt y Dagger2
  • Kotlin: cómo validar la class de datos
  • Respuesta de networking nula con Gson y Kotlin
  • Sobrecarga de constructor con Kotlin
  • Barra de navigation inferior "Fantasma" cuando el fragment se carga en la actividad del hogar
  • El constructor de SAM networkingundante no se puede eliminar para la function declarada de Kotlin, pero funciona en la function declarada de Java
  • Agregar / Consultar / Analizar SQLite usando Anko
  • ambas aplicaciones: showAsAction = "ifRoom" y android: showAsAction = "ifRoom" no funcionan como se esperaba
  • Generalizar método con arguments anulables y tipo de retorno
  • Clase de datos KotlinReflectionInternalError
  • Repare el tipo genérico al tipo del primer parámetro