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

时间:2015-01-19 10:40:43

标签: rest cookies session-cookies soapui jsessionid

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

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

我想要的是以某种方式动态设置请求标头中的cookie / jessionid,而无需显式/手动执行。

怎么做?

2 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:3)

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

import com.eviware.soapui.impl.wsdl.support.http.HttpClientSupport
def myCookieStore = HttpClientSupport.getHttpClient().getCookieStore()

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

def myCookies = myCookieStore.getCookies()
def interestingCookie
myCookies.each {
    if(it.name == "JSESSIONID")
        interestingCookie = it
}

在另一个请求中创建新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)

我在较早的博文here中有一些其他信息。