Java⽣成⼆进制⽂件与Postman以⼆进制流的形式发送请求业务描述:
模拟终端(智能家居)发送HTTP POST请求,请求参数为⼆进制流;⽽且,⼆进制流是加密后的数据,因此调试分两步:
1、Java代码⽣成加密后数据,并保存为⼆进制流⽂件(电脑上的图⽚就是⼆进制流⽂件,只不过我们打开的时候,借助于电脑软件渲染为图⽚)字符串转数组编码方式
上代码⽚段:
1byte[] oneshotBytes = Bytes();
2 log.info("length----->"+oneshotBytes.length);
3//FileWriter fw = new FileWriter(new File("/home/unisound/private_cloud_platform/rtc_demo/req_binary"));
4//fw.write(new String(oneshotBytes,"utf-8"));
5//fw.flush();
6//fw.close();
7 OutputStream os = new FileOutputStream(new File("/home/unisound/private_cloud_platform/rtc_demo/req_binary"));
8 os.write(oneshotBytes);
9 os.flush();
10 os.close();
代码很简单,就是把byte[]保存为⽂件;
坑点:千万不要把byte[] 转换为 String 然后把 String写⼊⽂件;不然你会发现,原本214字节的⽂件变为252字节或者更⼤
原因很简单,⼆进制流转换为字符串,这是编码的过程,编码就需要选择字符集(这⾥是UTF-8),字符集中字符长度和字节长度是不对等的,⽐如UTF-8中,⼀个汉字是3个字节,字母数组不编码仍然是⼀个字节~!
简单说,就是⼆进制数组byte[]与转换成的String后的Bytes()的长度是不⼀样的
2、PostMan发送请求
这个就简单了,body中选择binary(⼆进制流),选中第⼀步⽣成的⼆进制⽂件...
注意:
header中,不要设置ContentType(⼀定注意,不要设置ContentType,如果⾮要设置,请设置为ContentType=text/plain,这也是默认值)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论