我正在向SoapUI中的模拟REST服务器发送POST请求。请求的内容是jpeg图像。模拟服务器收到的标题如下所示:
Mon Mar 07 14:22:51 PST 2016:INFO:Headers: [Accept-Language:[en-us],
Authorization:[Basic 6b9b0cd1-cd80-42e6-87ca-d9e7b9a12a1e],
Host:[localhost:8080],
Content-Length:[3253337],
Content-Location:[myimage.jpg],
Accept-Encoding:[gzip, deflate],
User-Agent:[RestClient/1 CFNetwork/758.2.8 Darwin/15.3.0],
Connection:[keep-alive],
Accept:[application/json],
Content-Type:[image/jpeg]]
当我尝试使用请求输入流将内容保存为文件时,我得到一个零长度文件。这是我的代码:
def name = mockRequest.getRequestHeaders().get("Content-Location")
def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)
def path = groovyUtils.getProjectPath() + "/photos/" + name[0]
def outputFile = new File(path)
if (!outputFile.exists()) {
outputFile << mockRequest.request.inputStream
} else {
log.error "attempted to overwrite existing file"
}
如果我尝试将内容作为字符串获取,则该文件包含更多数据,但无法将其视为图像。这是上述的替代版本:
def requestBody = mockRequest.getRequestContent()
outputFile << requestBody
当我尝试查看该文件时,错误消息是无法打开该文件,因为它可能已损坏或文件格式无法识别。
将此数据作为jpeg文件从POST请求保存的正确方法是什么?