我正在尝试使用groovy脚本将REST(POST)API调用的原始响应捕获到文件中。
我可以在 RAW 中看到如下的响应,但是在生成文件时它是空白的。
REST响应:
HTTP/1.1 401 Unauthorized
content-length: 0
Date: Tue 12 jul 2016 12:12:12gmt
WWW-Autheticate: OAuth
Server: Jetty (8.1.17V20150415)
我正在使用SOAP UI 5.2版。
任何帮助表示感谢。
Groovy脚本:
def Date startTime = new Date()
File it=new File("Result")
def cur_Time = startTime.getMonth()+1 + "_" + startTime.getDate()
cur_Time = cur_Time + "_" + startTime.getHours() + startTime.getMinutes() +startTime.getSeconds()
def fileName = it.name + "_" + cur_Time
//Request File
def myXmlRequest="C:\\ConnectivityResults\\"+ "Rest_Request" + fileName+".xml"
def request=context.expand('${Testcasename#Request}')
def req = new File (myXmlRequest)
req.write(request,"UTF-8")
//Response File
def myXmlResponse="C:\\ConnectivityResults\\"+ "Rest_Response" + fileName+".xml"
def response=context.expand('${Testcasename#Response}')
def res = new File (myXmlResponse)
res.write(response,"UTF-8")
答案 0 :(得分:1)
问题不在您的 Groovy 脚本中,问题只是您的请求不正确而且没有任何内容作为响应返回。根据您在问题中显示的http-headers
:
HTTP/1.1 401 Unauthorized
content-length: 0
Date: Tue 12 jul 2016 12:12:12gmt
WWW-Autheticate: OAuth
Server: Jetty (8.1.17V20150415)
您收到的是401 Unauthorized
响应,而不是200 OK
,并且基于Content-lenght
即0。您的回复为空,这是正常的,因此没有内容可以保存在文件中。
基于评论的编辑
如果您还想将http-headers
保存在文件中,可以将以下代码段添加到 Groovy 脚本中:
def fileName = ...
// http-headers file
def httpHeadersFilePath ="C:/ConnectivityResults/Rest_Request${fileName}.txt"
def ts = testRunner.testCase.getTestStepByName('Testcasename')
def headers = ts.getTestRequest().response.responseHeaders
def httpHeaderFile = new File(httpHeadersFilePath)
httpHeaderFile.text = ''
headers.each { key, value ->
httpHeaderFile.append("${key}:${value}\n",'UTF-8')
}
希望它有所帮助,
答案 1 :(得分:0)
对不起......
使用 SoapUI 上的 Groovy脚本,有一种简单的方法将其记录并记录在文件中:
#Take the Raw Request into a variable "request":
def request = context.expand( '${Request 1#RawRequest}' )
#Take the Raw Response into a variable "response":
def response = context.expand( '${Request 1#Response}' )
#Create and fill a file "MyFile.json" whit the variables values:
new File( "C:/foo/bar/MyFile.json" ).write( request + response, "UTF-8" )
希望如此。