| | |
| | | package com.hdl.sdk.connect.bean;
|
| | |
|
| | | import android.text.TextUtils;
|
| | | import android.util.Log;
|
| | |
|
| | | import androidx.annotation.NonNull;
|
| | |
|
| | | import com.hdl.sdk.common.config.AuthenticateConfig;
|
| | | import com.hdl.sdk.connect.utils.AESUtils;
|
| | | import com.hdl.sdk.connect.utils.AesUtil;
|
| | |
|
| | | import java.io.UnsupportedEncodingException;
|
| | |
|
| | | import static com.hdl.sdk.common.config.TopicConstant.DEIVCE_AUTH_REQUEST;
|
| | | import static com.hdl.sdk.common.config.TopicConstant.GATEWAY_SEARCH;
|
| | |
|
| | | /**
|
| | | * Created by Tong on 2021/9/29.
|
| | |
| | | public class LinkRequest {
|
| | | private String topic;
|
| | | private String data;
|
| | |
|
| | | private int length;
|
| | |
|
| | | public LinkRequest() {
|
| | |
| | | public void setData(String data) {
|
| | | this.data = data;
|
| | | if (!TextUtils.isEmpty(data)) {
|
| | | setLength(data.length());
|
| | | setLength(getBytesLength(data));
|
| | | // setLength(data.length());
|
| | | } else {
|
| | | setLength(0);
|
| | | }
|
| | |
| | | "\r\n\r\n" +
|
| | | getData();
|
| | | }
|
| | |
|
| | | private static byte[] stringToBytes(String str) {
|
| | | try {
|
| | | // 使用指定的字符集将此字符串编码为byte序列并存到一个byte数组中
|
| | | return str.getBytes("utf-8");
|
| | | } catch (UnsupportedEncodingException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | return new byte[]{};
|
| | | }
|
| | |
|
| | | private int getBytesLength(String str){
|
| | | return stringToBytes(str).length;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 合并数组
|
| | | * @param bt1
|
| | | * @param bt2
|
| | | * @return
|
| | | */
|
| | | public static byte[] byteMerger(byte[] bt1, byte[] bt2){
|
| | | byte[] bt3 = new byte[bt1.length + bt2.length];
|
| | | System.arraycopy(bt1, 0, bt3, 0, bt1.length);
|
| | | System.arraycopy(bt2, 0, bt3, bt1.length, bt2.length);
|
| | | return bt3;
|
| | | }
|
| | | /**
|
| | | * 获取发送数据byte
|
| | | *
|
| | | * @return
|
| | | */
|
| | | public byte[] getSendBytes() {
|
| | | try {
|
| | | //判断是否需要加密
|
| | | if (AuthenticateConfig.getInstance().ifNeedEncrypt(topic)) {
|
| | | //需要加密
|
| | | byte[] dataBytes = AesUtil.aesEncrypt(stringToBytes(data), AuthenticateConfig.getInstance().getLocalSecret());
|
| | | String headString = "Topic:" + getTopic() + "\r\n" + "Length:" + dataBytes.length + "\r\n" + "\r\n";
|
| | | // byte[] headBytes = headString.getBytes("utf-8");
|
| | | byte[] headBytes = headString.getBytes();
|
| | | byte[] sendBytes = byteMerger(headBytes, dataBytes);
|
| | | return sendBytes;
|
| | | } else {
|
| | | return this.toString().getBytes("utf-8");
|
| | | }
|
| | |
|
| | | } catch (Exception e) {
|
| | | return new byte[]{};
|
| | | }
|
| | | }
|
| | | }
|