Вызов API со строковыми параметрами в Android с помощью Volley - PullRequest
0 голосов
/ 03 июня 2018

Я пытаюсь вызвать API, который добавляет данные в DynamoDB каждый раз, когда пользователь создает учетную запись.URL-адрес API имеет следующий формат:

https://t3x9lg8utf.execute-api.us-east-2.amazonaws.com/prod? id=""&username=""&numero_passeport=""&decision=""

Проблема в том, что при вызове API с использованием залпа я получаю эту ошибку:

06-03 14:32:23.599 13503-14515/com.amazonaws.youruserpools.CognitoYourUserPoolsDemo E/Volley: [14796] BasicNetwork.performRequest: Unexpected response code 400 for https://t3x9lg8utf.execute-api.us-east-2.amazonaws.com/prod

Код, который я использовал дляпозвоните в API:

  StringRequest sr = new StringRequest(Request.Method.GET, "https://t3x9lg8utf.execute-api.us-east-2.amazonaws.com/prod",
                    new Response.Listener<String>() {
                        @Override
                        public void onResponse(String response) {
                            Log.e("HttpClient", "success! response: " + response.toString());
                        }
                    },
                    new Response.ErrorListener() {
                        @Override
                        public void onErrorResponse(VolleyError error) {
                            Log.e("HttpClient", "error: " + error.toString());
                        }
                    })
            {
                @Override
                protected Map<String,String> getParams(){
                    Map<String,String> params = new HashMap<String, String>();
                    params.put("id","\"\"");
                    params.put("username","\"zaeae\"");
                    params.put("numero_passeport","\"\"");
                    params.put("decision","\"\"");

                    return params;
                }
                @Override
                public Map<String, String> getHeaders() throws AuthFailureError {
                    Map<String,String> params = new HashMap<String, String>();
                    return params;
                }
            };
            queue.add(sr);

Ответы [ 2 ]

0 голосов
/ 03 июня 2018

попробуйте

StringRequest sr = new StringRequest(Request.Method.GET, "https://t3x9lg8utf.execute-api.us-east-2.amazonaws.com/prod?id="+Uri.encode(id)+"&username="+Uri.encode(username)+"&numero_passeport="+Uri.encode(numero_passeport)+"&decision="+Uri.encode(decision),
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        Log.e("HttpClient", "success! response: " + response.toString());
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Log.e("HttpClient", "error: " + error.toString());
                    }
                })
        {
            @Override
            protected Map<String,String> getParams(){
                Map<String,String> params = new HashMap<String, String>();
                params.put("id","\"\"");
                params.put("username","\"zaeae\"");
                params.put("numero_passeport","\"\"");
                params.put("decision","\"\"");

                return params;
            }
            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                Map<String,String> params = new HashMap<String, String>();
                return params;
            }
        };
        queue.add(sr);

и передайте значения для id, username, numero_passeport and decision

0 голосов
/ 03 июня 2018

?id = "" &

Это параметры URL, которые нельзя передать через getParams()

. Вам необходимо добавить их в строку после Request.Method.GET

...