如何通过soapUI发送pdf文件的数组字节

时间:2014-05-19 14:57:11

标签: java pdf bytearray soapui

我正在通过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);

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

这是问题 - 或者至少是 问题:

new File(groovyUtils.projectPath + "//file1.pdf").text

您正在加载二进制文件,就好像它是文本一样。不是。不要将其作为文本读取,然后将其转换为字节 - 使用

byte[] pdfBytes = new File(groovyUtils.projectPath + "//file1.pdf").bytes