web-dev-qa-db-fra.com

Do SOAP Les services Web ne prennent en charge que la méthode http "POST")

J'ai rencontré cette question lors de l'une de nos interviews. Pourriez-vous donc nous dire si la méthode http SOAP ne prend en charge que les méthodes Web POST] ou s'il existe un moyen d'accepter d'autres méthodes côté serveur?

62
evgeniy44

J'ai toujours utilisé POST mais selon le norme W3C , SOAP supporte les deux POST et Méthodes GET.

Edit: Après quelques recherches, il semble que ce ne soit pas complètement vrai, comme vous pouvez le voir ici . Il est théoriquement possible d'utiliser GET car POST et GET sont des méthodes du protocole de transport HTTP et SOAP peut être utilisé sur HTTP.

Mais comme vous le savez, GET inclut la requête dans la chaîne de requête. SOAP (messages XML) sont généralement trop complexes et trop détaillées pour être incluses dans la chaîne de requête. Par conséquent, presque toutes les implémentations (par exemple, JAX-WS) ne prennent en charge que POST.

79
Eaque

Thread a trois ans mais je pense qu'il y aura encore beaucoup de gens qui se poseront la même question et qui trouveront une mauvaise réponse sur le Web. La réponse à la question est non, la méthode GET peut également être utilisée.

Selon SOAP, qui peut être trouvée ici: https://www.w3.org/TR/2007/REC-soap12-part0-20070427/#transport Les méthodes GET et POST peuvent être utilisées pour échanger des messages SOAP sur http. Utilisation de la méthode HTTP POST pour convoyant SOAP les messages dans le corps de la requête HTTP utilisent un modèle appelé le modèle d’échange de message demande-réponse SOAP . Dans le cas de HTTP GET, un modèle appelé modèle d'échange de messages de réponse SOAP est utilisé. La principale différence entre ces deux modèles est la suivante:

Le premier type d’interaction permet d’utiliser des données dans le corps d’un HTTP POST pour créer ou modifier l’état d’une ressource identifiée par l’URI à laquelle la demande HTTP est destinée.) type de modèle d'interaction offre la possibilité d'utiliser une requête HTTP GET pour obtenir la représentation d'une ressource sans en modifier l'état de quelque manière que ce soit.Pour le premier cas, le problème spécifique à SOAP est que le corps du HTTP POST est un message SOAP doit être traité (par le modèle de traitement SOAP)) en tant que partie de l'application traitement requis pour se conformer à la sémantique POST). Dans le second cas, l'utilisation typique qui est prévue est le cas où la représentation de la ressource demandée est renvoyée non sous forme de code HTML, ou Il s’agit bien d’un document XML générique, mais sous la forme d’un message SOAP. En d’autres termes, l’en-tête de type de contenu HTTP du message de réponse l’identifie comme étant du type de média " on/soap + xml "

Ainsi, les méthodes GET et POST peuvent être utilisées. L'autre chose est qu'en pratique, la plupart des méthodes POST est utilisée.

La mauvaise chose est que lorsque l'on compare des services RESTful avec des services SOAP, en tant qu'avantage de REST, les utilisateurs apportent la mise en cache, qui n'est pas disponible dans SOAP car = SOAP utilise uniquement le POST. Ceci est totalement faux.

16
Vahagn Nahapetyan