From 15b3ee439476e88df66991afb4e0a4d7a8e73422 Mon Sep 17 00:00:00 2001 From: wxr <464027401@qq.com> Date: 星期五, 18 十一月 2022 15:14:35 +0800 Subject: [PATCH] 备份 --- AndroidOpenDemo/DeviceAddModule/src/main/java/com/mm/android/deviceaddmodule/openapi/HttpClient.java | 96 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 96 insertions(+), 0 deletions(-) diff --git a/AndroidOpenDemo/DeviceAddModule/src/main/java/com/mm/android/deviceaddmodule/openapi/HttpClient.java b/AndroidOpenDemo/DeviceAddModule/src/main/java/com/mm/android/deviceaddmodule/openapi/HttpClient.java index 1a698f3..c0e53e0 100644 --- a/AndroidOpenDemo/DeviceAddModule/src/main/java/com/mm/android/deviceaddmodule/openapi/HttpClient.java +++ b/AndroidOpenDemo/DeviceAddModule/src/main/java/com/mm/android/deviceaddmodule/openapi/HttpClient.java @@ -1,11 +1,24 @@ package com.mm.android.deviceaddmodule.openapi; +import android.net.Uri; +import android.text.TextUtils; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.reflect.TypeToken; import com.mm.android.deviceaddmodule.mobilecommon.utils.LogUtil; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.URL; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; + import javax.net.ssl.HttpsURLConnection; public class HttpClient { @@ -85,4 +98,87 @@ } return resultData; } + + + /** + * 娣诲姞sign瀛楁 + */ + public static JsonObject encrypt(Map<String, Object> map) { + final String timestamp = String.valueOf(System.currentTimeMillis()); + final String appKey = "AppKey"; + final String appSecret = "AppSecret"; + + + JsonObject json = new JsonObject(); + for (Map.Entry<String, Object> entry : map.entrySet()) { + if (entry.getValue() instanceof String) { + json.addProperty(entry.getKey(), (String) entry.getValue()); + } else if (entry.getValue() instanceof Boolean) { + json.addProperty(entry.getKey(), (Boolean) entry.getValue()); + } else if (entry.getValue() instanceof Number) { + json.addProperty(entry.getKey(), (Number) entry.getValue()); + } else if (entry.getValue() instanceof Character) { + json.addProperty(entry.getKey(), (Character) entry.getValue()); + } else if (entry.getValue() instanceof JsonElement) { + json.add(entry.getKey(), (JsonElement) entry); + } + } + + + if (json != null) { + json.addProperty("appKey", appKey); + json.addProperty("timestamp", timestamp); + json.addProperty("sign", getSign(map, appSecret)); + } + return json; + } + + /** + * 闇�瑕佹寜瀛楁瘝鎺掑簭 + * + * @param map 鎵�鏈夊瓧娈典娇鐢╱rlParameter鎷兼帴锛岄櫎浜哸ppSecret + */ + private static String getSign(Map<String, Object> map, String appSecret) { + String builder = jsonToUrlParameter(map) + + appSecret; + return HDLMD5Utils.encodeMD5(builder); + } + + + private static String jsonToUrlParameter(Map<String, Object> map ) { + final Uri.Builder builder = new Uri.Builder(); + List<String> list = new ArrayList<>(map.keySet()); + Collections.sort(list); + for (String key : list) { + //鍒ゆ柇褰撳墠鍊兼槸鍚﹂渶瑕佸弬涓庣鍚嶏紝淇濇寔璺熶簯绔竴鑷� + if (IfValueNeedSign(map.get(key).toString())) { + builder.appendQueryParameter(key, map.get(key).toString()); +// HDLSDKLog.e("瑕佺鍚嶏細" + key + " 锛�" + map.get(key)); + } else { +// HDLSDKLog.e("涓嶉渶瑕佺鍚嶏細" + key + " 锛�" + map.get(key)); + } + } + return builder.build().getQuery(); + } + + /** + * 鍒ゆ柇褰撳墠鍊兼槸鍚﹂渶瑕佸弬涓庣鍚嶏紝淇濇寔璺熶簯绔竴鑷� + * 绌哄瓧绗︿覆涓嶅弬涓� + * 鏁扮粍,闆嗗悎,瀵硅薄涓嶅弬涓� + * + * @param valueStr + * @return + */ + private static boolean IfValueNeedSign(String valueStr) { + if (TextUtils.isEmpty(valueStr)) + return false; + final char[] strChar = valueStr.substring(0, 1).toCharArray(); + final char firstChar = strChar[0]; + //System.out.println("getJSONType firstChar = "+firstChar); + if (firstChar != '{' && firstChar != '[') + return true; + + return false; + } + } -- Gitblit v1.8.0