Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cookies 使用GROOVY脚本将cookie添加到SoapUI中的标头_Cookies_Groovy_Automation_Soapui - Fatal编程技术网

Cookies 使用GROOVY脚本将cookie添加到SoapUI中的标头

Cookies 使用GROOVY脚本将cookie添加到SoapUI中的标头,cookies,groovy,automation,soapui,Cookies,Groovy,Automation,Soapui,我对GROOVY脚本相当陌生。 我从soapUI触发一个请求,它基本上登录到数据库并返回cookie作为头的一部分 我需要一个groovy脚本,它可以获取cookie(EDEV)[上图中标记为红色]的值,并将该值传递给TestSuite中的所有其他请求 目前我正在使用下面的GROOVY脚本来实现这一点,但无法实现。有人能帮忙吗 import com.eviware.soapui.impl.wsdl.support.http.HttpClientSupport def myCookieStore

我对GROOVY脚本相当陌生。 我从soapUI触发一个请求,它基本上登录到数据库并返回cookie作为头的一部分

我需要一个groovy脚本,它可以获取
cookie(EDEV)
[上图中标记为红色]的值,并将该值传递给TestSuite中的所有其他请求

目前我正在使用下面的GROOVY脚本来实现这一点,但无法实现。有人能帮忙吗

import com.eviware.soapui.impl.wsdl.support.http.HttpClientSupport
def myCookieStore = HttpClientSupport.getHttpClient().getCookieStore()
def val = testRunner.testCase.testSteps['Login'].testRequest.response.getResponseHeaders()
def re = /(EDEV=.*,)/
def matcher = ( val =~ re )
def cookie = matcher[0][0]
def map=[:]
testRunner.testCase.testSteps['Login2'].testRequest.requestHeaders=map
def headers=testRunner.testCase.testSteps['Login2'].testRequest.requestHeaders
headers.put('Cookie', cookie)
testRunner.testCase.testSteps['Login2'].testRequest.requestHeaders=headers
其中,
Login
是登录的测试用例,
Login2
是需要传递cookie值并将其添加到请求头中的目标测试用例


我已经检查了
http://stackoverflow.com/questions/20640173/how-do-i-get-a-cookie-from-a-soapui-response-using-a-groovy-test-step
我回答了这个问题,并对我的脚本进行了一些编辑,但我仍然无法在下一个请求中看到EDEV cookie。

您正在读取请求的标题,而不是cookie

要阅读cookie,请执行以下操作:

import com.eviware.soapui.impl.wsdl.support.http.HttpClientSupport
def myCookieStore = HttpClientSupport.getHttpClient().getCookieStore()
def interestingCookie
myCookies.each {
    if(it.name == "EDEV")
        interestingCookie = it
}
会话中只有一个cookie存储,因此您必须将cookie存储在某个位置,如属性中:

testCase.testSuite.project.setPropertyValue("interestingCookie", interestingCookie)
稍后,要将此cookie设置回

import org.apache.http.impl.Cookie.BasicClientCookie
import com.eviware.soapui.impl.wsdl.support.http.HttpClientSupport
def myCookieStore = HttpClientSupport.getHttpClient().getCookieStore()
def interestingCookie = testCase.testSuite.project.getPropertyValue("interestingCookie")
def myNewCookie = new BasicClientCookie("EDEV", interestingCookie)
myCookieStore.addCookie(myNewCookie)

您可以在我的博客上找到。

可能的重复版本与中给出的解决方案不起作用。您在代码中的什么位置读取myCookieStore中的Cookie?!?!我完全误解了这个问题。。。你说得对。:)。不,这对@SiKing也没有帮助。@saptashi你需要更详细地描述“it”是什么,以及你到底在做什么。