2011-09-29 2 views
2

Je dois appeler un service Web pour supprimer des données, et je dois le faire en utilisant HttpDelete. Le service prend un objet JSON en paramètre.HttpSupprime la requête avec la charge utile JSON dans Android

J'ai déjà fait HttpPost en utilisant SetEntity, mais cela n'est pas disponible avec HttpDelete.

C'est un appel comme http://url/DELETE/service et quelque chose comme { id: "xxxxxxx", id2: 11 } comme paramètre.

Je ne trouve pas de bonnes informations à ce sujet. Des idées?

+0

Copie possible: [HttpSupprime avec le corps] (http://stackoverflow.com/q/3773338/842697) –

Répondre

1

Vous ne pouvez pas envoyer un corps dans une requête HTTP DELETE.

Si vous avez besoin de faire cela, il y a probablement quelque chose qui ne va pas dans votre conception REST.

Pourquoi pas http://url/srvice/xxxxxx/11 au lieu de http://url/DELETE/service avec un corps?

1

RFC2616 ne spécifie rien sur une entité dans une requête HTTP DELETE. Je dirais que votre meilleur pari est de transmettre les valeurs dont vous avez besoin dans le chemin de votre demande.

http: // url/SUPPRIMER/Service/xxxxxx/11

0

L'ID est le plus probable dans l'URL ou peut-être pu être répercutée dans une valeur d'en-tête. Voici un exemple:

HttpDelete httpdelete = new HttpDelete(targetURL);        
httpdelete.setHeader("id",id); // If not in the url, this could be where the id is set. 
0

Il y a des cas d'utilisation quand ce serait génial. Un que je rencontre actuellement est un besoin de "supprimer en bloc". Fondamentalement, pour des raisons d'efficacité, la suppression d'une entrée à la fois est beaucoup plus lente que la suppression de plusieurs entrées à la fois. Je suis obligé d'utiliser POST et être non-RESTful. À mon avis, c'est un défaut de conception dans REST, ou au moins une limitation de conception.

Questions connexes