在SOAP UI请求中为休息Web服务发送cookie作为请求标头

Ana*_*and 13 cookies rest soapui jsessionid session-cookies

我正在测试一个Rest API使用SOAP UI工具.

首先,我点击了另一个API,它给了我jSessionid,然后在我的实际请求中,我通过名称"Cookie"向请求头添加了一个参数,并为其提供了上面提取的jsessionid值.一切都很好.

我想要的是以某种方式动态设置请求标头中的cookie/jessionid而不显式/手动执行它.

怎么做到呢?

kir*_*ify 9

您可以从UI创建应用程序会话,并使用保存会话的cookie.使用浏览器的开发人员工具从浏览器获取会话cookie详细信息.该图显示了浏览器中cookie的可用位置:获取cookie头参数

在soapUI中创建一个header属性,其值与从浏览器中获得的值相同并运行请求.该请求将使用保存在cookie中的相同会话ID(JSESSIONID)来运行请求.下图显示了如何将cookie值添加到标题中.添加cookie值o请求标头

  • OP知道如何做到这一点.问题是如何自动化这个过程. (3认同)

SiK*_*ing 3

您可以使用 Groovy 脚本轻松操作 Cookie。在 SoapUI 中,Cookie 保存在 Cookie 存储中:

import com.eviware.soapui.impl.wsdl.support.http.HttpClientSupport
def myCookieStore = HttpClientSupport.getHttpClient().getCookieStore()
Run Code Online (Sandbox Code Playgroud)

您可以读取其中的所有 Cookie:

def myCookies = myCookieStore.getCookies()
def interestingCookie
myCookies.each {
    if(it.name == "JSESSIONID")
        interestingCookie = it
}
Run Code Online (Sandbox Code Playgroud)

要在另一个请求中创建新的 Cookie:

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)
Run Code Online (Sandbox Code Playgroud)

我在一篇较旧的博客文章中提供了一些附加信息。