在 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 中工作