2013-01-28 10 views
7

HttpDelete contiene un metodo come setEntity(), come HttpPost o HttpPut? Quando uso HttpPost faccio qualcosa di simile:setEntity in HttpDelete

httppost.setEntity(new UrlEncodedFormEntity(
    getNameValuePairsForFriends(context, friendID))); 

Come posso fare questo con addebbitato eliminare?

+1

HttpDelete non supporta entità. Quindi devi impiantarlo di nuovo. [Questa è la risposta] [1] [1]: http://stackoverflow.com/questions/3773338/httpdelete-with-body – nebyan

risposta

3

Non credo che HTTP DELETE assuma input, credo che funzioni come una variante GET.

L'implementazione fornita da Client HTTP sembra supportare anche questa congettura.

Se si desidera fornire un'eliminazione con un corpo, è possibile/prendere in considerazione l'utilizzo di un POST in un luogo che accetta un corpo.

Ma in risposta alla tua domanda, no, elimina non accetta un corpo. È possibile aggiungere parametri di query ma non un corpo.

+0

Secondo HTTP standard DELETE non prende in ingresso. Ma potresti incontrare un'API del server che richiede i dati del modulo inviati nel metodo DELETE HTTP. È sbagliato ma succede. – nuoritoveri

2

HTTPDelete non trasporterà alcun carico utile.

HttpDelete prenderà solo l'uri/url da eliminare ed emetterà un'intestazione HTTP DELETE sulla suddetta risorsa.

0
class MyDelete extends HttpPost 
{ 
    public MyDelete(String url){ 
     super(url); 
    } 
    @Override 
    public String getMethod() { 
     return "DELETE"; 
    } 
} 

Fai la tua classe estendere la http cancellare classe di là e durante rendendo l'oggetto della vostra entità inviato classe e si sarà in grado di inviare i dati in httpdelete

HttpResponse httpResponse; 
String result = null; 
HttpClient httpClient = new DefaultHttpClient(); 

HttpConnectionParams 
     .setConnectionTimeout(httpClient.getParams(), 10000); 


MyDelete httpDelete = new MyDelete(urlUnfollowPatientBundle); 
StringEntity entity = null; 
try { 
    entity = new StringEntity(rawData); 
    httpDelete.setEntity(entity); 
} catch (UnsupportedEncodingException e) { 
    e.printStackTrace(); 
} 

try { 

    httpResponse = httpClient.execute(httpDelete); 
    if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { 
     HttpEntity httpEntity = httpResponse.getEntity(); 
     result = EntityUtils.toString(httpEntity); 
     status = true; 
    } 
+0

Si prega di formattare la risposta correttamente. Attualmente è difficile da leggere. Inoltre, ti preghiamo di spiegarlo un po 'meglio, sembra in conflitto con la risposta accettata. – anderas

+0

Non è possibile eseguire 'httpDelete.setEntity'. Non esiste alcun metodo 'setEntity' per' httpdelete', questo è il problema. – Kayvar

+0

@Kayvar, leggi il codice, @ user2306383 estende HttpPost e poi chiama la var locale 'httpPost', che in effetti ha un metodo' setEntity' – liltitus27

Problemi correlati