111
hxb
2022-11-24 08b203ac4cda87b13837f8e003e9caade9c9cc52
AndroidOpenDemo/DeviceAddModule/src/main/java/com/mm/android/deviceaddmodule/openapi/HttpSend.java
@@ -6,11 +6,14 @@
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.reflect.TypeToken;
import com.mm.android.deviceaddmodule.LCDeviceEngine;
import com.mm.android.deviceaddmodule.mobilecommon.AppConsume.BusinessException;
import com.mm.android.deviceaddmodule.mobilecommon.utils.LogUtil;
import com.mm.android.deviceaddmodule.mobilecommon.utils.MD5Helper;
import org.apache.http.conn.ConnectTimeoutException;
import org.json.JSONObject;
import java.io.IOException;
import java.net.SocketException;
@@ -30,14 +33,21 @@
    public static JsonObject execute(Map<String, Object> paramsMap, String method,int timeOut) throws BusinessException {
        Map<String, Object> map = paramsInit(paramsMap);
        // 返回json
        JsonObject jsonObj = doPost(CONST.HOST + "/openapi/" + method, map,timeOut);
//        JsonObject jsonObj = doPost(CONST.HOST + "/home-wisdom/imou/openapi/" + method, map,timeOut);
        LogUtil.debugLog(TAG, "url::"+method+"\n"+"response result:" + jsonObj.toString());
        if (jsonObj == null) {
            throw new BusinessException("openApi response is null");
        JsonObject jsonResult = null;
        if (CONST.isHdlServer()) {
            if (method.equals("bindDevice")) {
                jsonResult = doPost(CONST.HOST + "/home-wisdom/app/device/independentRegister", map, timeOut);
            } else {
                jsonResult = doPost(CONST.HOST + "/home-wisdom/imou/openapi/" + method, map, timeOut);
            }
        } else {
            jsonResult = doPost(CONST.HOST + "/openapi/" + method, map, timeOut);
            if (jsonResult == null) {
                throw new BusinessException("openApi response is null");
            }
            jsonResult = jsonResult.getAsJsonObject("result");
        }
        JsonObject jsonResult = jsonObj.getAsJsonObject("result");
        if (jsonResult == null) {
            throw new BusinessException("openApi response is null");
        }
@@ -46,61 +56,56 @@
            String msg = jsonResult.get("msg").getAsString();
            throw new BusinessException(code + msg);
        }
        JsonObject jsonData = new JsonObject();
        try {
            JsonObject jsonData = jsonResult.getAsJsonObject("data");
            if (jsonData ==null){
                jsonData=new JsonObject();
            jsonData = jsonResult.getAsJsonObject("data");
            if (jsonData == null) {
                jsonData = new JsonObject();
            }
            return jsonData;
        } catch (Throwable e) {
            BusinessException businessException = new BusinessException(e);
            throw businessException;
//            BusinessException businessException = new BusinessException(e);
//            throw businessException;
        }
        return jsonData;
    }
    public static JsonObject execute(String json, String method,int timeOut) throws BusinessException {
        // 返回json
        LogUtil.debugLog(TAG, "request result:" + json.toString());
        JsonObject jsonObj = doPost(CONST.HOST + "/openapi/" + method, json,timeOut);
        LogUtil.debugLog(TAG, "URL::"+method+"\n"+"response result:" + jsonObj.toString());
        if (jsonObj == null) {
            throw new BusinessException("openApi response is null");
        }
        JsonObject jsonResult = jsonObj.getAsJsonObject("result");
        if (jsonResult == null) {
            throw new BusinessException("openApi response is null");
        }
        String code = jsonResult.get("code").getAsString();
        if (!"0".equals(code)) {
            String msg = jsonResult.get("msg").getAsString();
            throw new BusinessException(code + msg);
        }
        try {
            JsonObject jsonData = jsonResult.getAsJsonObject("data");
            if (jsonData ==null){
                jsonData=new JsonObject();
            }
            return jsonData;
        } catch (Throwable e) {
            BusinessException businessException = new BusinessException(e);
            throw businessException;
        }
    }
    private static JsonObject doPost(String url, Map<String, Object> map, int timeOut) throws BusinessException {
        Gson gson = new Gson();
//        map.put("homeId","15626203746");
        String json = gson.toJson(map);
        JsonObject jsonObject = new JsonObject();
        String json;
        JsonObject jsonObject;
        if(CONST.isHdlServer()) {
            map.put("homeId", LCDeviceEngine.newInstance().getHomeId());
            if (map.containsKey("params")) {
                Map<String, Object> tempMap = (Map<String, Object>) map.get("params");
                map.remove("params");
                map.remove("id");
                map.remove("system");
                for (Map.Entry<String, Object> temp : tempMap.entrySet()) {
                    if ("page".equals(temp.getKey())) {
                        map.put("pageNo", temp.getValue());
                    }
                    else {
                        if("token".equals(temp.getKey())){
                            continue;
                        }
                        map.put(temp.getKey(), temp.getValue());
                    }
                }
            }
//        JsonElement parseString = JsonParser.parseString(json);
//        jsonObject = parseString.getAsJsonObject();
//        jsonObject = HttpClient.encrypt(map);
//        json = gson.toJson(jsonObject);
            json = gson.toJson(HttpClient.encrypt(map));
        }else{
            json = gson.toJson(map);
        }
        try {
            LogUtil.debugLog(TAG, "reqest: " + url + " data:" + json.toString());
            LogUtil.debugLog(TAG, "reqest: " + url + " data:" + json);
            String openApi = HttpClient.post(url, json, "application/json", "OpenApi",timeOut);
            LogUtil.debugLog(TAG, "返回结果: \r\n"  + openApi);
            jsonObject =  new JsonParser().parse(openApi).getAsJsonObject();
        } catch (IOException e) {
            BusinessException b = new BusinessException(e);
@@ -118,28 +123,6 @@
        return jsonObject;
    }
    private static JsonObject doPost(String url, String json, int timeOut) throws BusinessException {
        Gson gson = new Gson();
        JsonObject jsonObject = new JsonObject();
        try {
            LogUtil.debugLog(TAG, "reqest: " + url + " data:" + json.toString());
            String openApi = HttpClient.post(url, json, "application/json", "OpenApi",timeOut);
            jsonObject =  new JsonParser().parse(openApi).getAsJsonObject();
        } catch (IOException e) {
            BusinessException b = new BusinessException(e);
            if (e instanceof ConnectTimeoutException || e instanceof SocketTimeoutException
                    || e instanceof UnknownHostException
                    || e instanceof UnknownServiceException || e instanceof SSLException
                    || e instanceof SocketException) {
                b.errorDescription = "操作失败,请检查网络";
            }
            throw b;
        } catch (Throwable e) {
            BusinessException b = new BusinessException(e);
            throw b;
        }
        return jsonObject;
    }
    private static Map<String, Object> paramsInit(Map<String, Object> paramsMap) {
        long time = System.currentTimeMillis() / 1000;
@@ -165,26 +148,69 @@
        return map;
    }
//    public static JsonObject execute(String json, String method,int timeOut) throws BusinessException {
//        // 返回json
//        LogUtil.debugLog(TAG, "request result:" + json.toString());
//        JsonObject jsonResult=null;
//        if (CONST.isHdlServer()) {
//            JsonObject jsonObj = doPost(CONST.HOST + "/home-wisdom/imou/openapi/"  + method, json, timeOut);
//            LogUtil.debugLog(TAG, "URL::"+method+"\n"+"response result:" + jsonObj.toString());
//            if (jsonObj == null) {
//                throw new BusinessException("openApi response is null");
//            }
//            jsonResult = jsonObj;
//        }
//        else {
//            JsonObject jsonObj = doPost(CONST.HOST + "/openapi/" + method, json, timeOut);
//            LogUtil.debugLog(TAG, "URL::"+method+"\n"+"response result:" + jsonObj.toString());
//            if (jsonObj == null) {
//                throw new BusinessException("openApi response is null");
//            }
//            jsonResult = jsonObj.getAsJsonObject("result");
//        }
//
//        if (jsonResult == null) {
//            throw new BusinessException("openApi response is null");
//        }
//        String code = jsonResult.get("code").getAsString();
//        if (!"0".equals(code)) {
//            String msg = jsonResult.get("msg").getAsString();
//            throw new BusinessException(code + msg);
//        }
//        try {
//            JsonObject jsonData = jsonResult.getAsJsonObject("data");
//            if (jsonData ==null){
//                jsonData=new JsonObject();
//            }
//            return jsonData;
//        } catch (Throwable e) {
//            BusinessException businessException = new BusinessException(e);
//            throw businessException;
//        }
//    }
    /**
     * 基本类型加密
     * <p>
     * 判断当前值是否需要参与签名,保持跟云端一致
     * 空字符串不参与
     * 数组,集合不参与
     *
     * @return ture 需要加密
     */
    private static boolean valueNeedSign(String valueStr) {
        try {
            if (TextUtils.isEmpty(valueStr)) return false;
            final char[] strChar = URLDecoder.decode(valueStr, "utf-8")
                    .substring(0, 1).toCharArray();
            final char firstChar = strChar[0];
            return firstChar != '{' && firstChar != '[';
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }
//    private static JsonObject doPost(String url, String json, int timeOut) throws BusinessException {
//        Gson gson = new Gson();
//        JsonObject jsonObject = new JsonObject();
//        try {
//            LogUtil.debugLog(TAG, "reqest: " + url + " data:" + json.toString());
//            String openApi = HttpClient.post(url, json, "application/json", "OpenApi",timeOut);
//            jsonObject =  new JsonParser().parse(openApi).getAsJsonObject();
//        } catch (IOException e) {
//            BusinessException b = new BusinessException(e);
//            if (e instanceof ConnectTimeoutException || e instanceof SocketTimeoutException
//                    || e instanceof UnknownHostException
//                    || e instanceof UnknownServiceException || e instanceof SSLException
//                    || e instanceof SocketException) {
//                b.errorDescription = "操作失败,请检查网络";
//            }
//            throw b;
//        } catch (Throwable e) {
//            BusinessException b = new BusinessException(e);
//            throw b;
//        }
//        return jsonObject;
//    }
}