使用IDEA的|使用IDEA的 HTTP request发请二进制数据流访问请求
再与硬件的对接过程中,我们希望能够通过IDEA来模拟一些与硬件通讯的二进制数据,比如:
byte[] input = new byte[]{
// 类型编号
0x00,
// 中继器编号
(byte) 0xff, (byte) 0xff,
// 监视器类别0
0x12,
// 监视器编号
(byte) 0xab, (byte) 0xff, (byte) 0xcb
};
IDEA自带的的HTTP Request能够快速的满足我们各样的数据请求,但在其官方文档中却没有发送发送二进制数据流的直接示例。
若要发送一些二进制数据流,则可以按以下步骤操作:
建立二进制文档 我们可以新建一个文档,名字及扩展名随便起,比如我们将其命名为
0x01.data
。该文档存储的信息则将是我们发送http请求的二进制数据流。安装插件 若想使用
0x01.data
文件符合我们的测试要求,则需要一款二进制的编辑器来编辑器。IDEA中友好的出现了BinEd插件。找到插件管理,并在市场选项中以bined关键字进行搜索后,安装:
文章图片
插件安装成功后,需要重新启动IDEA。
编辑数据文件 双击在前面我们建立的文件
0x01.data
,并任何选择一种打开方式,比如我们选择将其做为文本打开,然后在右侧的文件内容区域点击右键,并选择最后一个选项 Open As Binary
:文章图片
此时就可以直接在这里编辑二进制文件了。
文章图片
建立请求 最后便可以使用HTTP Request来发送以
0x01.data
文件为基础的二进制数据了。我们在
0x01.data
文件的同级位置上新建一个Http Request,并加入以下代码:POST http://localhost:8081/yourApi
Content-Type: application/octet-stream< ./0x01.data
此时运行请请求,便可以成功地向后台发送二进制数据流了。
其它 数据少的时候我们还可以手动敲一下,但如果数据量比较大,那么我们肯定更期待使用一些JAVA的语法来构造(比如我们希望生成1M且有规则的二进制数据流)。此时则需要一些代码来辅助了,示例代码如下:
package club.yunzhi.switchgear.httpRequest;
import club.yunzhi.switchgear.input.MonitorInput0x01Test;
import org.apache.commons.lang3.ArrayUtils;
import org.junit.jupiter.api.Test;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
public class Monitor0x01 {
@Test
void saveToDisk() {
// 使用代码来构建测试的二进制数组
byte[] category = new byte[]{
(byte) 0x00,
(byte) 0x00, (byte) 0x01,
(byte) 0x01
};
byte[] bytes = ArrayUtils.addAll(category, MonitorInput0x01Test.input);
// 将二进制写入到0x01.data中
File outputFile = new File("./0x01.data");
try {
FileOutputStream fileOutputStream = new FileOutputStream(outputFile);
fileOutputStream.write(bytes);
fileOutputStream.flush();
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
【使用IDEA的|使用IDEA的 HTTP request发请二进制数据流访问请求】代码运行完毕后,将生成的数据文件复制到自己想要的位置即可。
推荐阅读
- 热闹中的孤独
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 放屁有这三个特征的,请注意啦!这说明你的身体毒素太多
- 一个人的旅行,三亚
- 布丽吉特,人生绝对的赢家
- 慢慢的美丽
- 尽力
- 一个小故事,我的思考。
- 家乡的那条小河
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量