Les services web SOAP ne prennent en charge que la méthode http" POST"

j'ai fait face à cette question sur l'un des entretiens, alors pourriez-vous s'il vous plaît dire si les services web SOAP ne prennent en charge que la méthode http "POST" ou s'il y a un moyen d'accepter d'autres méthodes du côté du serveur?

50
demandé sur evgeniy44 2014-10-13 15:50:20

2 réponses

j'ai toujours utilisé POST mais selon le W3C standard , SOAP supporte les méthodes POST et GET.

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

mais comme vous le savez, demande dans la chaîne de requête. Les requêtes SOAP (messages XML) sont généralement trop complexes et verbeuses pour être incluses dans la chaîne de requête, de sorte que presque toutes les implémentations (par exemple JAX-WS) ne prennent en charge que POST.

64
répondu Eaque 2017-05-23 12:18:20

fil est de trois ans, mais je pense qu'il y aura encore beaucoup de gens qui se donneront cette même question à eux-mêmes et trouveront la mauvaise réponse dans le web. La réponse à la question est non, la méthode GET peut aussi être utilisée.

selon la spécification SOAP, qui se trouve 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. L'utilisation de la méthode HTTP POST pour transmettre les messages SOAP dans les corps de la requête HTTP utilise un modèle appelé SOAP request-response message exchange pattern . Dans le cas de HTTP GET un modèle est utilisé appelé soap réponse message exchange pattern . La principale différence entre ces deux modèles est:

le premier type d'interaction permet l'utilisation de données dans le corps D'un post HTTP pour créer ou modifier l'état d'une ressource identifiée par L'URI à laquelle la requête HTTP est destinée. Le deuxième type de schéma d'interaction offre la possibilité d'utiliser une requête HTTP GET pour obtenir une représentation d'une ressource, sans en modifier l'état de quelque manière. Dans le premier cas, L'aspect préoccupant spécifique à SOAP est que le corps de la requête HTTP POST est un message SOAP qui doit être traité (selon le modèle de traitement SOAP) dans le cadre du traitement spécifique à l'application requis pour se conformer au message POST. sémantique. Dans le second cas, l'usage typique qui est forseen est le cas où la représentation de la ressource qui est demandée est retournée non pas comme un HTML, ou en fait un document XML générique, mais comme un message SOAP. C'est-à-dire que L'en-tête de type de contenu HTTP du message de réponse l'identifie comme étant du type de média "application / soap+xml"

donc les méthodes GET et POST peuvent être utilisées. L'autre chose est que dans la pratique la plupart de la méthode POST est utilisée.

la mauvaise chose est que lorsque l'on compare les services reposants avec les services SOAP, comme un avantage de repos les gens apportent la mise en cache, qui n'est pas disponible dans le SOAP, parce que le SOAP utilise seulement le POST. Ce qui est totalement faux.

10
répondu Vahagn Nahapetyan 2018-04-06 10:29:55