2013-01-28 6 views
7

Enthält das HttpDelete eine Methode wie setEntity(), wie HttpPost oder HttpPut? Wenn ich Httppost ich etwas tun, wie folgt:setEntity in HttpDelete

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

Wie kann ich dies tun, mit Wtih löschen?

+1

HttpDelete nicht Entität unterstützt. Sie müssen es also erneut implementieren. [Dies ist die Antwort] [1] [1]: http://stackoverflow.com/questions/3773338/httpdelete-with-body – nebyan

Antwort

3

Ich glaube nicht, dass HTTP DELETE nimmt Eingang - ich glaube, es verhält sich wie eine GET-Variante.

Die von HTTP Client bereitgestellte Implementierung scheint diese Vermutung ebenfalls zu unterstützen.

Wenn Sie einen Löschvorgang mit einem Textkörper erstellen möchten, können/möchten/Sie möglicherweise einen POST an einem Speicherort verwenden, der einen Textkörper akzeptiert.

Aber als Antwort auf Ihre Frage, nein, delete akzeptiert keinen Körper. Sie können Abfrageparameter, jedoch keinen Rumpf hinzufügen.

+0

Laut Standard-HTTP nicht gelöscht Eingang nehmen. Sie können jedoch auf eine Server-API stoßen, die Formulardaten benötigt, die in der HTTP-Methode DELETE gesendet werden. Es ist falsch, aber es passiert. – nuoritoveri

2

HTTPDelete wird keine Nutzlast übertragen.

HttpDelete wird nur die URI/URL zu löschen und gibt einen DELETE HTTP-Header an die genannte Ressource.

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

Machen Sie Ihre Klasse erweitern die http-Klasse löschen dort und während das Objekt der Klasse geschickt Einheit zu machen, und Sie werden in die Daten zu schreiben in der Lage 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

Bitte formatieren Sie Ihre Antwort richtig. Derzeit ist es schwer zu lesen. Erklären Sie es bitte auch etwas besser, es scheint mit der akzeptierten Antwort zu kollidieren. – anderas

+0

Sie können 'httpDelete.setEntity' nicht ausführen. Es gibt keine Methode 'setEntity' für' httpdelete', das ist das Problem. – Kayvar

+0

@Kayvar, lesen Sie den Code, @ user2306383 erweitert HttpPost und nennt dann die lokale var 'httpPost', die tatsächlich eine' setEntity' Methode hat – liltitus27

Verwandte Themen