乐趣区

关于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();
    }
  }
}

代码运行结束后,将生成的数据文件复制到本人想要的地位即可。

退出移动版