Java生成二进制文件与Postman以二进制流的形式发送请求

业务描述:

模拟终端(智能家居)发送HTTP POST请求,请求参数为二进制流;而且,二进制流是加密后的数据,因此调试分两步:

1、Java代码生成加密后数据,并保存为二进制流文件 (电脑上的图片就是二进制流文件,只不过我们打开的时候,借助于电脑软件渲染为图片)

上代码片段:

 1 byte[] oneshotBytes = reqParms.getBytes();
 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后的XXX.getBytes()长度是不一样的!!!!

 

2、PostMan发送请求

这个就简单了,body中选择binary(二进制流),选中第一步生成的二进制文件...

注意:

header中,不要设置ContentType(一定注意,不要设置ContentType,如果非要设置,请设置为ContentType=text/plain,这也是默认值)

 

转载于:https://www.cnblogs.com/huahua035/p/10883519.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值