2016-04-12 3 views
3

Я пытаюсь отправить запрос DELETE с помощью Volley в REST Api с такими параметрами, как X-user-email и X-User-token. Я пробовал почти все в Интернете, но все же я получаю сообщение об ошибке 400.Запросить удаление с помощью Volley Android

Когда я использовать POST запрос свою работу, поэтому я думаю, что его же для УДАЛИТЬ, я просто изменил:

(Request.Method.POST, url, params, new Response.Listener<JSONObject>() {...} 

по

(Request.Method.DELETE, url, params, new Response.Listener<JSONObject>() {...} 

Существует мой следующий код:

ГлавнаяActivity.java

disconnect.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) {; 
       JSONObject params = new JSONObject(); 
       try { 
        params.put("X-User-Email", "[email protected]"); 
        params.put("X-User-Token", "QwerTyuI789IOP"); 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
       NetworkManager.getInstance(v.getContext()).delete("http://10.0.2.2:3000/users/sign_out", params, new NetworkManager.NetworkManagerListener<String>() { 
        @Override 
        public void getResult(String response) 
        { 
         if (!response.isEmpty()) 
         { 
          result.setText(response.toString()); 
          Log.e("Response", response.toString()); 
         } 
        } 
       }); 
      } 
     }); 

NetworkManager.java

public void delete(String url, JSONObject params, final NetworkManagerListener<String> listener) { 
     JsonObjectRequest request = new JsonObjectRequest 
       (Request.Method.DELETE, url, params, new Response.Listener<JSONObject>() { 
        @Override 
        public void onResponse(JSONObject response) { 
         Log.d(TAG + ": ", "delete onResponse : " + response.toString()); 
         if (null != response.toString()) 
          listener.getResult(response.toString()); 
        } 
       }, new Response.ErrorListener() { 

        @Override 
        public void onErrorResponse(VolleyError error) { 
         if (null != error.networkResponse) { 
          Log.d(TAG + ": ", "delete Error Response code: " + error.networkResponse.statusCode); 
          listener.getResult(error.toString()); 
         } 
        } 
       }) { 
      @Override 
      public Map<String, String> getHeaders() throws AuthFailureError { 
       Map<String, String> params = new HashMap<String, String>(); 
       params.put("Accept", "application/json"); 
       params.put("Content-type", "application/json"); 
       return params; 
      } 
     }; 
     ; 
     requestQueue.add(request); 
    } 

вы знаете, как исправить это делать? спасибо, что прочитал меня.

ответ

4

Потому что DELETE запрос игнорирует данные тела, тогда вы должны создать класс CustomHurlStack.

Пожалуйста далее мой ответ на следующий вопрос SO:

Delete Request With header and Parametes Volley

Или попробуйте my GitHub sample project. Надеюсь, поможет!

+1

Gotcha, спасибо! –

Смежные вопросы