我正在使用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文件以及如何做到这一点?
谢谢,
答案 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文件。