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 LinkRequest(String topic, String data) { this.topic = topic; setData(data); } public String getTopic() { return topic; } public void setTopic(String topic) { this.topic = topic; } public String getData() { return data; } public void setData(String data) { this.data = data; if (!TextUtils.isEmpty(data)) { setLength(getBytesLength(data)); // setLength(data.length()); } else { setLength(0); } } public int getLength() { return length; } private void setLength(int length) { this.length = length; } @NonNull @Override public String toString() { return "Topic:" + getTopic() + "\r\n" + "Length:" + getLength() + "\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[]{}; } } }