SOAP UI - 将HTTP请求保存到GZIP文件

时间:2015-09-14 20:05:39

标签: http groovy soapui

我正在使用Soap UI免费版进行一些休息模拟。

我需要将我的HTTP POST请求(请求已经压缩的gzip)保存到gzip文件中 我尝试过不同的方法,但是在执行代码之后,当我尝试手动解压缩文件时,我遇到以下错误:“存档格式未知或已损坏”。

HTTP POST请求具有以下标头:

Host : 127.0.0.1:8091
Content-Length : 636
User-Agent : Java/1.7.0_07
Connection : keep-alive
Content-Type : application/octet-stream
Accept : text/plain, application/json, application/*+json, */*
Pragma : no-cache
Cache-Control : no-cache

在我尝试过的解决方案之下:

解决方案#1:

byte[] buffer = new byte[1024];  
byte[] data = mockRequest.getRequestContent().getBytes();  
def path="myfile.gz";  
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(path));  
bos.write(data);  
bos.flush();  
bos.close();

溶液#2

byte[] buffer = new byte[1024];
byte[] data = mockRequest.getRawRequestData();
def path="myfile.gz";
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(path));
bos.write(data);
bos.flush();
bos.close();

有人可以帮忙,让我知道为什么我无法解压缩gzip文件以及如何做到这一点?

谢谢,

1 个答案:

答案 0 :(得分:1)

这是Groovy,因此您不需要所有这些Java混乱。

以下是一些可行的代码:

new File( path) << mockRequest.rawRequestData

修改

好的,根据您的评论,要正确复制zip文件,您可能需要一些不同的东西:

import java.nio.file.*

Files.copy(new ByteArrayInputStream(mockRequest.requestContent.bytes), 
           Paths.get( 'destination.zip' ) )

使用实际的zip文件的byte []作为源进行测试并且它有效。如果它不适合您,那么您从requestContent.bytes获取的字节数组不是zip文件。