Я использовал имя пользователя Volley для POST, пароль и адрес электронной почты пользователя для регистрации. Я сделал ссылку от This tutorial. И работал так же, как определено в этом уроке.Volley Post Request не работает с API
Вот мой код:
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST,
URL_string.api_url,null
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.i("Result", "Success");
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.i("Result", "UnSuccess");
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
Log.i("Result_Params",emailValue + passwordValue + nameValue);
params.put("email", emailValue);
params.put("password", passwordValue);
params.put("name", nameValue);
return super.getParams();
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("Content-Type", "application/json; charset=utf-8");
return super.getHeaders();
}
};
RequestQueue requestQueue = Volley.newRequestQueue(this);
jsonObjectRequest.setRetryPolicy(new DefaultRetryPolicy(DefaultRetryPolicy.DEFAULT_TIMEOUT_MS * 2, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
requestQueue.add(jsonObjectRequest);
Но мой код показывает эту ошибку:
[368] BasicNetwork.performRequest: Unexpected response code 422 for http://myapi.com/api/register
Ошибка 422 определяется по API, как:
{
"message": "422 Unprocessable Entity",
"errors": {
"email": [
"The email field is required."
],
"password": [
"The password field is required."
],
"name": [
"The password field is required."
]
},
"status_code": 422
}
Я пробовал:
изменения JsonObjectRequest в StringRequest,
оригинальный URL на месте URL_string.api_url,
Но ответ все еще то же самое. Это из-за того, что я не создал класс для библиотеки Volley? Я тоже сделал это с Androidhive.info, но не смог!
Я не знаю, как это сделать сейчас, в то время как вход в getParams регистрирует правильное значение имени, электронной почты и pw, введенных пользователем, но все же операция POST не работает. Пожалуйста помоги! Спасибо заранее!
вы должны вернуть не paramters супер значение – silverFoxA
Да, это worked.Thank вам столько @silverFoxA – Swr7der