在 SOAP UI 请求中将 cookie 作为请求标头发送以获取 REST Web 服务

Posted

技术标签:

【中文标题】在 SOAP UI 请求中将 cookie 作为请求标头发送以获取 REST Web 服务【英文标题】:Sending cookie as request header in SOAP UI request for rest web service 【发布时间】:2015-03-17 08:18:05 【问题描述】:

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

首先,我点击了另一个 API,它给了我 jSessionid,然后在我的实际请求中,我在请求标头中添加了一个名为 "Cookie" 的参数并提供它是上面提取的 jsessionid 值。一切正常。

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

怎么做?

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

OP 知道如何做到这一点。问题是如何自动化这个过程。【参考方案2】:

您可以使用 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 中提供了一些其他信息。

【讨论】:

以上是关于在 SOAP UI 请求中将 cookie 作为请求标头发送以获取 REST Web 服务的主要内容,如果未能解决你的问题,请参考以下文章

在 Java 中将 WireMock 与 SOAP Web 服务一起使用

如何在 WPF 应用程序中 SOAP 客户端的“Set-Cookie”标头响应的新请求中设置“Cookie”标头

对 SOAP Web 服务的 JQuery AJAX 调用 - 访问被拒绝。在 SOAP UI 中工作

如何在WPF应用程序中的SOAP客户端的“Set-Cookie”标头响应的新请求中设置“Cookie”标头

使用node-soap发送正确的soap请求

在 SOAP Web 服务调用中将 Kerberos 票证作为参数传递