如何 return 来自 SoapUI REST 模拟的二进制数据
How to return binary data from SoapUI REST mock
我正在尝试创建一个从文件中读取二进制数据的 REST 模拟服务。模拟服务需要仅使用二进制数据作为内容发回 HTTP 响应。我不知道二进制数据的编码。我搜索了可能的解决方案,但找不到任何解决方案。谁能帮我解决这个问题?
到目前为止,我尝试将文件中的字节填充到响应字符串中,但使用 Postman 分析时数据似乎已损坏。在下面的示例中,我使用 PDF 文件作为输入。代码 运行 作为 MockResponse 中的脚本。
def file = new java.io.File("D:/tmp/test.pdf")
byte[] fileBytes = file.getBytes()
String fileString = new String(fileBytes)
mockResponse.setResponseContent(fileString)
我正在 运行宁 SoapUI 5.6.0 Windows 10.
经过一番研究,我发现可以将文件中的数据流式传输到 httpResponse。以下代码按要求工作:
import org.apache.commons.io.IOUtils
def httpResponse = mockRequest.httpResponse
def file = new java.io.File("D:/tmp/test.pdf")
// Set Header values as needed
mockRequest.httpResponse.addHeader("Content-Type", "application/octet-stream")
mockRequest.httpResponse.addHeader("Content-Disposition", "attachment;filename=test.pdf")
try {
FileInputStream fis = new FileInputStream(file);
OutputStream os = httpResponse.getOutputStream()
IOUtils.copy(fis,os)
} catch (Exception e){
log.info " error"
}
finally {
fis.close()
os.close()
}
我正在尝试创建一个从文件中读取二进制数据的 REST 模拟服务。模拟服务需要仅使用二进制数据作为内容发回 HTTP 响应。我不知道二进制数据的编码。我搜索了可能的解决方案,但找不到任何解决方案。谁能帮我解决这个问题?
到目前为止,我尝试将文件中的字节填充到响应字符串中,但使用 Postman 分析时数据似乎已损坏。在下面的示例中,我使用 PDF 文件作为输入。代码 运行 作为 MockResponse 中的脚本。
def file = new java.io.File("D:/tmp/test.pdf")
byte[] fileBytes = file.getBytes()
String fileString = new String(fileBytes)
mockResponse.setResponseContent(fileString)
我正在 运行宁 SoapUI 5.6.0 Windows 10.
经过一番研究,我发现可以将文件中的数据流式传输到 httpResponse。以下代码按要求工作:
import org.apache.commons.io.IOUtils
def httpResponse = mockRequest.httpResponse
def file = new java.io.File("D:/tmp/test.pdf")
// Set Header values as needed
mockRequest.httpResponse.addHeader("Content-Type", "application/octet-stream")
mockRequest.httpResponse.addHeader("Content-Disposition", "attachment;filename=test.pdf")
try {
FileInputStream fis = new FileInputStream(file);
OutputStream os = httpResponse.getOutputStream()
IOUtils.copy(fis,os)
} catch (Exception e){
log.info " error"
}
finally {
fis.close()
os.close()
}