Android Kotlin – Volley Неожиданный код ответа 500

Я создал REST API с Django Rest Framework. В настоящее время я работаю над мобильным приложением для своего сайта. Когда я делаю запрос POST (это мой второй запрос POST в моем приложении), я получаю эту ошибку:

E / Volley: [385] BasicNetwork.performRequest: неожиданный код ответа 500 для http://laude.ct8.pl/api/user/data/aktualizacja/

Вот мой код:

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) } 

Когда я использую те же данные на своем веб-сайте, я не получаю никаких ошибок, я получил его только в мобильном приложении. Спасибо за помощь !

Ошибка сервера вызвана тем, что вы JsonObjectRequest и передаете JsonObject как совокупность параметров, в то время как ваш сервер требует их в качестве Strings ( я заметил ссылку! ). Быстрое исправление – использовать StringRequest и передать ваши параметры как String as! Проверьте код ниже, чтобы получить представление!

 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) } 

Вы также должны учесть, что ответ также является String поэтому, если вам нужно, чтобы JSONOject конвертировал его.

Извините, если вы можете получить какие-либо ошибки в коде! Я написал код на Java и конвертирую в Kotlin с помощью Android Studio! Надеюсь, вы получите общую идею!