Невозможно вызвать метод POST, используя Volley - PullRequest
0 голосов
/ 14 декабря 2018

Код, как показано ниже:

public void loginPost(String url, String emailAddress, String password){
        Map<String, String> params = new HashMap();
        params.put("email", emailAddress);
        params.put("password", password);
        JSONObject parameters = new JSONObject(params);
        String LOGIN_REQUEST_TAG = "LOGIN_REQUEST_TAG";

        JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, url, parameters, new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                Log.d("Login Response:", response.toString());
                JSONObject responseOject = response;
                if(responseOject.has("data")){
                    try {
                        Log.d("Data Response", responseOject.getString("data"));
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }else if(responseOject.has("error")){
                    try {
                        errorMessage = responseOject.getString("error");
                        new AlertDialog.Builder(MainActivity.this)
                                .setTitle("Error")
                                .setMessage(errorMessage)
                                .setNegativeButton("OK", null)
                                .show();
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }else{
                    //Server error. Come back again later
                    Log.d("Server error", "Server Error");

                }
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                VolleyLog.e("Error at login: ", error.getMessage());
            }

        });
        AppSingleton.getInstance(getApplicationContext()).addToRequestQueue(jsonObjectRequest,LOGIN_REQUEST_TAG);

    }

Все параметры и URL верны, как я проверял во время отладки.И все хорошо работает в Почтальоне.Однако приведенный выше код просто не входит в метод onResponse, и я не получаю никакой ошибки.Но это предупреждение о том, что "responseOject" является избыточным.Я делаю это неправильно?Совершенно новый для разработки Android.

Ошибка:

BasicNetwork.performRequest: Unexpected response code 401

Это POST API, и я использую Request.Method.Post, почему я получаю эту ошибку?

1 Ответ

0 голосов
/ 14 декабря 2018

Перед использованием API протестируйте его в Почтальон .Вы получите четкое представление о том, что происходит.Код ошибки 401 означает, что ваши параметры неверны.ИЛИ вы не авторизованы для доступа к этому API.

Попробуйте этот код для этого типа вызова.

  private void callNetwork(final String email, final String password) {
        String json_object_request = "jsonObjectRequest";
        //Creating a string request
        StringRequest stringRequest = new StringRequest(Request.Method.POST, Config.URL_LOGIN,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        if (response != null) {
                            parseData(response);
                        }
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        progressBar.setVisibility(View.GONE);
                    }
                }) {
            @Override
            protected Map<String, String> getParams() {
                Map<String, String> params = new HashMap<>();
                //Adding parameters to request
                params.put("email", email);
                params.put("password", password);
                //returning parameter
                return params;
            }
        };

        //Adding the string request to the queue

        AppController.getInstance().addToRequestQueue(stringRequest, json_object_request);
    }
...