Добавление параметров в Restful API с помощью JsonObjectRequest в Android Studio - PullRequest
0 голосов
/ 22 мая 2019

Я вызываю api restful на моем проекте Android, и я использовал Volley и JsonObjectRequest, я думал, что третий параметр JsonObjectRequest, который является jsonRequest, является параметрами API, поэтому я создал объект json для того, что в конце концов я только получил ошибки. Так обычно ли напрямую добавлять параметры API в URL? вместо передачи его на объект JSON? для чего нужен третий параметр, было бы очень полезно, если бы кто-то мог привести мне пример. И последний вопрос: как получить полный ответ json вместо response.getString("title") для каждого ключа.

//api parameters directly added on the url
String URL = "https://www.myapi.com/?param=sample&param1=sample1";
JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST, URL, null,
            new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                try {
                    String title = response.getString("Title");
                    Log.d("title", title);
                } catch(Exception e){
                    Log.e("response error", e.toString());
                }

            }
        },
        new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.e(TAG, error.toString());
            }
        });

1 Ответ

1 голос
/ 22 мая 2019

Ниже вашего Response.ErrorListener () вам нужно добавить эти два переопределения:

new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
        Log.e(TAG, error.toString());
    }) {
    @Override
    protected Map<String, String> getParams() 
    {  
            Map<String, String>  params = new HashMap<String, String>();  
            params.put("param", "sample");
            params.put("param1", "sample1);

            return params;  
    }

   @Override
   public Map<String, String> getHeaders() throws AuthFailureError {
       HashMap<String, String> headers = new HashMap<String, String>();
            headers.put("Accept", "application/x-www-form-urlencoded; charset=UTF-8");
            headers.put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
       return headers;
   }
};
...