我使用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)
}
当我在我的网站上使用相同的数据时,我没有收到任何错误,我只在移动应用上获得。 谢谢你的帮助!
答案 0 :(得分:0)
服务器错误是由于您制作JsonObjectRequest
并将JsonObject
作为参数体传递而服务器需要Strings
(我观察到链接! / em>的)。快速解决方法是使用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<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编写代码并使用Android Studio转换为Kotlin!我希望你能得到一般的想法!