SOAP UI - 如何在文件中捕获 REST 原始响应
SOAP UI - How to Capture REST raw Response in a file
我正在尝试使用 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")
问题可能不在您的 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')
}
希望对您有所帮助,
抱歉来晚了...
有一种简单的方法可以获取它并记录在文件中,在您的 SoapUI[= 上使用 Groovy Script 20=]:
#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" )
希望有用。
我正在尝试使用 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")
问题可能不在您的 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')
}
希望对您有所帮助,
抱歉来晚了...
有一种简单的方法可以获取它并记录在文件中,在您的 SoapUI[= 上使用 Groovy Script 20=]:
#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" )
希望有用。