2015-09-02 1 views
1

Est-il possible d'envoyer un texte simple dans le corps d'une StringRequest en utilisant DELETE-Method?Requête Android Volley avec corps

Je n'ai pas trouvé d'exemple où quelqu'un a mis quelque chose dans le corps d'une requête ... Ceci est ma demande et je veux ajouter "{'deviceid': 'xyz'}" au corps (méthode est SUPPRIMER):

final StringRequest stringRequest = new StringRequest(method, url + "?token=" + token, new Response.Listener<String>() { 
     @Override 
     public void onResponse(String jsonResponse) { 
      // do something 
    }, new Response.ErrorListener() { 
      // do something 
     } 
    }) { 

     @Override 
     public Map<String, String> getHeaders() throws AuthFailureError { 
      HashMap<String, String> headers = new HashMap<String, String>(); 
      headers.put("api-version", "1"); 

      return headers; 
     } 
    }; 
+0

Rédiger propre demande et '' override' getBody() 'et' getBodyContentType() 'méthodes. –

+0

Si votre côté serveur est Asp.Net WebAPI, IMO, vous devriez lire [cette question] (http://stackoverflow.com/questions/25783542/reason-behind-get-delete-cannot-have-body-in-webapi) et [une autre question] (http://stackoverflow.com/questions/299628/is-an-ity-body-allowed-for-an-http-delete-request). Peut-être que l'autre service web est le même – BNK

+0

Merci pour les deux réponses! @dieter_h Pourriez-vous poster un exemple de code rapide, s'il vous plaît? –

Répondre

3

Essayez ceci:

public class StringJSONBodyReqest extends StringRequest { 

    private static final String TAG = StringJSONBodyReqest.class.getName(); 
    private final String mContent; 

    public StringJSONBodyReqest(int method, String url, String content, Response.Listener<String> listener, Response.ErrorListener errorListener) { 
     super(method, url, listener, errorListener); 
     mContent = content; 
    } 


    @Override 
    public Map<String, String> getHeaders() throws AuthFailureError { 
     HashMap<String, String> headers = new HashMap<String, String>(); 
     headers.put("api-version", "1"); 

     return headers; 
    } 


    @Override 
    public byte[] getBody() throws AuthFailureError { 

     byte[] body = new byte[0]; 
     try { 
      body = mContent.getBytes("UTF-8"); 
     } catch (UnsupportedEncodingException e) { 
      Log.e(TAG, "Unable to gets bytes from JSON", e.fillInStackTrace()); 
     } 
     return body; 
    } 


    @Override 
    public String getBodyContentType() { 
     return "application/json"; 
    } 
} 

mContent est votre JSON String

+0

Merci pour cette réponse, mais le corps est toujours ignoré. Si j'utilise DELETE dans Postman, tout semble fonctionner, donc mon serveur fonctionne bien. Une autre idée sur la façon de faire envoyer le corps à Volley? –

+0

Je n'entends parler d'aucune autre méthode. –