我有一个帖子请求,我必须将gzip文件作为字节数组发送。 我尝试过以下方法:
创建了一个BeanShell预处理器,使用以下函数将文件转换为字节数组(从此处获取此函数):
import java.io.BufferedInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream;
FileInputStream in = new FileInputStream(“C:\ Users \ New \ Desktop \ Load_Testing”); ByteArrayOutputStream bos = new ByteArrayOutputStream(); byte [] buffer = new byte [1024]; for(int i;(i = in.read(buffer))!= -1;){ bos.write(buffer,0,i); } 附寄(); byte [] postData = bos.toByteArray(); bos.close(); vars.put(“postData”,new String(postData));
但是文件没有发送。
但是对于所有情况我都会收到错误:
:{“结果”:“上传数据流时出错\ u000d \ u000a GZip标头中的幻数不正确。请确保您在System.IO.Compression.GZipDecoder中传入GZip流。\ u000d \ u000a。在System.IO.Compression.Inflater.Inflate(Byte []字节,Int32偏移量,Int32长度)\ u000d \的System.IO.Compression.Inflater.Decode()\ u000d \ u000a中的ReadHeader(InputBuffer输入)\ u000d \ u000a u000a at System.IO.Compression.DeflateStream.Read(Byte [] array,Int32 offset,Int32 count)\ u000d \ u000a at System.IO.Compression.GZipStream.Read(Byte [] array,Int32 offset,Int32 count)\ u000d \ u000a at Service.IO.Stream.ReadByte()\ u000d \ u000a at ServiceData.CompressionHelper.UnGZip(Byte [] input)
请帮帮我。非常感谢任何帮助。
非常感谢
答案 0 :(得分:0)
首先,我不喜欢您的文件路径C:\Users\New\Desktop\Load_Testing
。在Java和Beanshell中,您需要像C:\\Users\\New\\Desktop\\Load_Testing
第二:确保您发送了正确的gzip
文件。如果您的C:\Users\New\Desktop\Load_Testing
文件不是gzip格式,则需要在Beanshell预处理器中将其压缩,如下所示:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.GZIPOutputStream;
byte[] buffer = new byte[1024];
GZIPOutputStream gzos = new GZIPOutputStream(new FileOutputStream("C:/Users/New/Desktop/Load_Testing.gz"));
FileInputStream in = new FileInputStream("C:/Users/New/Desktop/Load_Testing");
int len;
while ((len = in.read(buffer)) > 0) {
gzos.write(buffer, 0, len);
}
in.close();
gzos.finish();
gzos.close();
最后,请确保您正在发送正确的Accept-Encoding标头。为此,请在gzip
节中添加HTTP Header Manager并包含Accept-Encoding
值。
希望这会有所帮助。