Android Kotlin – Volley意外的响应代码500

我使用Django Rest Framework创建了REST API。 目前,我正在为我的网站开发移动应用程序。 当我做POST请求(这是我的应用程序中的第二个POST请求),我得到这个错误:

E / Volley:[385] BasicNetwork.performRequest: http ://laude.ct8.pl/api/user/data/aktualizacja/意外的响应代码500

这是我的代码:

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并将您的参数作为字符串传递! 检查下面的代码,以获得主意!

 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 { val params = HashMap() 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编写代码,并使用Android Studio转换为Kotlin! 我希望你能得到大概的想法!