Comment transmettre l'id de session dans le cadre de la requête Soap?
J'invoque une demande d'authentification afin d'obtenir un id de session :
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<loginResponse xmlns="urn:company" xmlns:ns2="urn:company">
<result>
<sessionId>2342422342.dc8bizxsfapi03</sessionId>
<msUntilPwdExpiration>2342342342342353452323</msUntilPwdExpiration>
</result>
</loginResponse>
</S:Body>
</S:Envelope>
Dans la doc de l'API Soap que je suis avec elle déclare :
A successful login will return a
session ID as an HTTP Cookie. This cookie must be passed back to all subsequent HTTP
Requests that invoke API operations in order to authenticate.
Comment est l'id de session transmis à la prochaine http reqeust que ce n'est pas décrite ?
Je suppose que j'ai besoin d'incorporer l'ID de session dans une balise XML dans le cadre de la subsequesnt demande, mais ce doit être détaillée dans l'API ou est-il un mécanisme standard je peux utiliser ?
Autant que je sache, le SAVON est apatride, de par sa conception. Tentant de la rendre dynamique doit être un mécanisme spécifique qui doit être détaillée dans l'API
Salut, je ne suis probablement pas comprendre le problème correctement, mais pour moi, il semble que vous devez extraire l'IDENTIFIANT de session dans la propriété (cas de test, TestSuite ou d'un Projet) et ensuite utiliser la propriété définie. BTW, voici un exemple de comment le faire.
puisque vous utilisez
Désolé, j'ai oublié d'ajouter le lien mentionné à l'exemple soapui.org/Functional-Testing/...
La question est taggés avec soapui, mais aussi java et le printemps; vous essayer d'obtenir cette configuration dans soapui ou dans du code Java? Si dans le code Java, ce que le client pile (jax-ws, cxf, etc.) utilisez-vous?
Salut, je ne suis probablement pas comprendre le problème correctement, mais pour moi, il semble que vous devez extraire l'IDENTIFIANT de session dans la propriété (cas de test, TestSuite ou d'un Projet) et ensuite utiliser la propriété définie. BTW, voici un exemple de comment le faire.
puisque vous utilisez
soapui
, vous pouvez écrire un script groovy pour l'insérer à une autre demandeDésolé, j'ai oublié d'ajouter le lien mentionné à l'exemple soapui.org/Functional-Testing/...
La question est taggés avec soapui, mais aussi java et le printemps; vous essayer d'obtenir cette configuration dans soapui ou dans du code Java? Si dans le code Java, ce que le client pile (jax-ws, cxf, etc.) utilisez-vous?
OriginalL'auteur blue-sky | 2014-04-16
Vous devez vous connecter pour publier un commentaire.
La documentation de l'API vous renvoi indique que le service sera de définir un cookie sur la réponse qui doit être réglé sur toute demande ultérieure. Des Cookies sont envoyés via les en-têtes HTTP, pas le corps de la requête/réponse, et sont couramment utilisés pour établir et de maintenir des sessions. Le sous-jacent HTTP bibliothèque de client du service web framework utilise est bien équipé pour gérer cela pour vous, mais parce que le SAVON services web sont conçus pour être apatride, vous avez généralement à demander le cadre si vous le souhaitez afin de maintenir les sessions. Lorsque vous activez cette fonctionnalité, c'est tout simplement le cadre enverra tous les cookies sur le serveur que le serveur envoie à elle, ce qui est précisément ce que votre SAVON documentation de l'API est de demander ce que vous faites.
Pour activer cette fonctionnalité dans jax-ws, vous définissez BindingProvider.SESSION_MAINTAIN_PROPERTY de vrai sur le RequestContext. Cet article donne un exemple et plus de détails.
OriginalL'auteur Peter G
Oui, c'est un populaire mécanisme.
Que l'API états de la clé de session a été renvoyée dans le Cookie (c'est un en-tête HTTP). Qu'est-ce que dans un corps de réponse n'est qu'une répétition de la clé de session (je l'espère). Vous avez besoin d'extraire le cookie à partir des en-têtes HTTP. Si vous utilisez le JAX-WS vous pouvez activer la session de sensibilisation à l'aide de
BindingProvider.SESSION_MAINTAIN_PROPERTY
:Si non, alors essayer de trouver comment faire pour obtenir et définir les en-têtes HTTP en utilisant votre web services framework.
OriginalL'auteur swist
Il existe plusieurs façons vous pouvez extraire l'id de session.
À partir du xml que vous avez fournies, il semble que l'id de session est dans la réponse xml. Si c'est le cas, vous pouvez utiliser la méthode suggérée par olyv et extraire l'id de session à partir de la réponse xml.
Comme lakshman suggèrent que vous pourriez utiliser groovy pour analyser l'id de session
à partir de la réponse xml.
Le code ci-dessous peut aider.
Ce code et son explication est disponible en Êtes-vous une tasse? blog.
cookie
et de l'affectation de l'id de session. Vous aurez à vérifier le nom de la propriété et de la valeur de format en regardant le raw de la demande/réponse.essayer ce code par exemple
ou
Code ci-dessus de l'échantillon est de http://forum.soapui.org/viewtopic.php?t=3066#p10957
lien au-dessus de la ligne: http://www.soapui.org/Functional-Testing/testcase-execution.html
ne serait pas le
maintain http session
option pour vous?OriginalL'auteur Abhishek Asthana
Description de l'API que vous avez joint les points que tout ce que vous devez faire est de gérer vos cookies correctement.
Connexion réussie réponse aura le cookie avec un IDENTIFIANT de session (également dupliqués comme
<sessionId>xxxx</sessionId>
élément dans la réponse).Tout ce que vous avez à faire est d'inclure ce cookie dans tous les appels ultérieurs à cette API.
Selon votre HTTP/SOAP client de ces choses juste besoin de mise en place et le client suit tout simplement le contrat de Cookie HTTP standard, donc il reçoit les cookies, les stocke, tant qu'ils sont valides, et les transmet à toutes les demandes ultérieures apportées à la même URI.
Si vous utilisez SoapUI, il suffit d'ajouter la gestion de session pour votre cas de test comme l'indique l'image ci-dessous:
Si cela ne suffit pas et que vous souhaitez pop le capot et voir qu'est-ce que voir ce blog
HTH
OriginalL'auteur diginoise