Je teste un Rest API
en utilisant SOAP UI
outil.
Tout d'abord, j'ai frappé une autre API qui m'a donné le jSessionid puis dans ma demande réelle, j'ai ajouté un paramètre à l'en-tête de la demande par le nom "Cookie" et lui fournir ce qui précède extrait jsessionid valeur. Tout fonctionnait bien.
Ce que je veux, c'est définir dynamiquement le cookie/jessionid dans l'en-tête de la demande sans le faire explicitement/manuellement.
Comment ceci peut être fait?
Vous pouvez créer une session d'application à partir de l'interface utilisateur et utiliser des cookies qui enregistrent la session. Obtenez les détails du cookie de session à partir du navigateur à l'aide des outils de développement du navigateur. L'image montre où les cookies sont disponibles dans le navigateur:
Dans soapUI, créez un attribut d'en-tête avec la même valeur que celle obtenue à partir du navigateur et exécutez la demande. La demande utilisera le même identifiant de session (JSESSIONID) qui est enregistré dans le cookie pour exécuter la demande. Les images ci-dessous montrent comment ajouter la valeur du cookie à l'en-tête.
Vous pouvez facilement manipuler les cookies à l'aide de scripts Groovy. Dans SoapUI, les cookies sont conservés dans la boutique de cookies:
import com.eviware.soapui.impl.wsdl.support.http.HttpClientSupport
def myCookieStore = HttpClientSupport.getHttpClient().getCookieStore()
Vous pouvez y lire tous les cookies:
def myCookies = myCookieStore.getCookies()
def interestingCookie
myCookies.each {
if(it.name == "JSESSIONID")
interestingCookie = it
}
Pour créer un nouveau cookie dans une autre demande:
import org.Apache.http.impl.Cookie.BasicClientCookie
def myNewCookie = new BasicClientCookie("cookie_name", "cookie_value")
myNewCookie.version = 1
myNewCookie.domain = "qa.test"
myCookieStore.addCookie(myNewCookie)
J'ai quelques informations supplémentaires dans un ancien blog ici .