我正在通过wsdl
测试SoapUI
文件,并希望将byte[]
pdf文件发送给客户端。客户端收到byte[]
,但创建的pdf文件为空。以下是我的所作所为:
SoapUI响应脚本:
def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context )
byte[] pdfBytes = new File(groovyUtils.projectPath + "//file1.pdf").text.getBytes( 'UTF-8' )
requestContext.pdfBytes = pdfBytes.encodeBase64()
Java代码:
byte[] bytes = getFileFromServer();
File f = new File(filePath);
try {
FileOutputStream fileOuputStream = new FileOutputStream(f);
fileOuputStream.write(bytes);
fileOuputStream.close();
} catch (FileNotFoundException e) {
LOG.error("FileNotFoundException", e);
} catch (IOException e) {
LOG.error("IOException", e);
}
通过使用解码,创建的文件会损坏:
bytes = Base64.decodeBase64(bytes);
有什么想法吗?
答案 0 :(得分:1)
这是问题 - 或者至少是 问题:
new File(groovyUtils.projectPath + "//file1.pdf").text
您正在加载二进制文件,就好像它是文本一样。不是。不要将其作为文本读取,然后将其转换为字节 - 使用
byte[] pdfBytes = new File(groovyUtils.projectPath + "//file1.pdf").bytes