CrabtreeOn,印度客户定制APP,迁移2.0平台版本
1
wxr
2023-03-31 d53e6af2c5f17838fa79659614b15a2a1f383399
Crabtree/SmartHome/HDL/Common/HttpUtil/HttpUtil.cs
@@ -1,4 +1,10 @@
using System;
/**发布环境 使用发布环境 发布的正式签名KEY**/
#define Distribution
///**测试环境 使用测试环境 使用测试的签名KEY**/
//#undef Distribution
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
@@ -7,6 +13,8 @@
//using HDL_ON.Entity;
using RestSharp;
using Shared.SimpleControl;
namespace Shared
{
@@ -38,12 +46,46 @@
        #endregion
        #region **********网络请求封装**********
#if Distribution
        ///**********正式环境**********
        /// <summary>
        /// 固定域名,正式环境
        /// 公共域名就近解析
        /// </summary>
        //public const string GlobalRequestHttpsHost = "https://nearest.hdlcontrol.com";
#if DEBUG1
        public const string GlobalRequestHttpsHost = "https://test-gz.hdlcontrol.com";
#else
        public const string GlobalRequestHttpsHost = "https://bahrain-gateway.hdlcontrol.com";
#endif
        /// <summary>
        ///
        /// </summary>
        const string APP_KEY = "HDL-HOME-IND-APP";
        /// <summary>
        ///
        /// </summary>
        const string SECRET_KEY = "yPL345bn68gHnvilG4tYbq3cTYkiHu";
#else
        ///**********测试环境**********
        /// <summary>
        /// 固定域名,测试境
        /// 公共域名就近解析
        /// </summary>
        public const string GlobalRequestHttpsHost = "https://china-gateway.hdlcontrol.com";
        /// <summary>
        ///
        /// </summary>
        const string APP_KEY = "HDL-APP-TENANT";
        /// <summary>
        ///
        /// </summary>
        const string SECRET_KEY = "CeL345bn28gHnvi9G4tYcq3cTYkiiC";
#endif
        /// <summary>
        ///  Get  请求服务器方法
@@ -55,9 +97,9 @@
        /// <param name="replaceToken"></param>
        /// <param name="mTimeout"></param>
        /// <returns></returns>
        public static ResponsePackNew RequestHttpsGet(string apiPath, Dictionary<string, object> queryDictionary = null, Dictionary<string, object> urlSegmentDictionary = null, string urlHead = "", string replaceToken = "", int mTimeout = 10)
        public static ResponsePackNew RequestHttpsGet (string apiPath, Dictionary<string, object> queryDictionary = null, Dictionary<string, object> urlSegmentDictionary = null, string urlHead = "", string replaceToken = "", int mTimeout = 10)
        {
            return RequestHttps(Method.GET, apiPath, null, queryDictionary, urlSegmentDictionary, urlHead, replaceToken, mTimeout);
            return RequestHttps (Method.GET, apiPath, null, queryDictionary, urlSegmentDictionary, urlHead, replaceToken, mTimeout);
        }
        ///// <summary>
@@ -95,7 +137,7 @@
        /// <param name="bodyParameterJson"></param>
        /// <param name="mTimeout"></param>
        /// <returns></returns>
        public static ResponsePackNew RequestHttpsPostFroHome(string apiPath, string bodyParameterJson, int mTimeout = 10)
        public static ResponsePackNew RequestHttpsPostFroHome (string apiPath, string bodyParameterJson, int mTimeout = 10)
        {
            //string urlHead2 = UserConfig.Instance.CurrentRegion.regionUrl;
            string urlHead = GlobalRequestHttpsHost;
@@ -104,7 +146,7 @@
            //{
            //    replaceToken = DB_ResidenceData.residenceData.MasterToken;
            //}
            return RequestHttps(Method.POST, apiPath, bodyParameterJson, null, null, urlHead, "", mTimeout);
            return RequestHttps (Method.POST, apiPath, bodyParameterJson, null, null, urlHead, "", mTimeout);
        }
        /// <summary>
@@ -117,9 +159,9 @@
        /// <param name="replaceToken"></param>
        /// <param name="mTimeout"></param>
        /// <returns></returns>
        public static ResponsePackNew RequestHttpsPost(string apiPath, string bodyParameterJson, string urlHead = "", string replaceToken = "", int mTimeout = 10)
        public static ResponsePackNew RequestHttpsPost (string apiPath, string bodyParameterJson, string urlHead = "", string replaceToken = "", int mTimeout = 10)
        {
            return RequestHttps(Method.POST, apiPath, bodyParameterJson, null, null, urlHead, replaceToken, mTimeout);
            return RequestHttps (Method.POST, apiPath, bodyParameterJson, null, null, urlHead, replaceToken, mTimeout);
        }
        /// <summary>
@@ -132,9 +174,9 @@
        /// <param name="replaceToken"></param>
        /// <param name="mTimeout"></param>
        /// <returns></returns>
        public static ResponsePackNew RequestHttpsPost(string apiPath, Dictionary<string, object> queryDictionary, string urlHead = "", string replaceToken = "", int mTimeout = 10)
        public static ResponsePackNew RequestHttpsPost (string apiPath, Dictionary<string, object> queryDictionary, string urlHead = "", string replaceToken = "", int mTimeout = 10)
        {
            return RequestHttps(Method.POST, apiPath, null, queryDictionary, null, urlHead, replaceToken, mTimeout);
            return RequestHttps (Method.POST, apiPath, null, queryDictionary, null, urlHead, replaceToken, mTimeout);
        }
        /// <summary>
@@ -149,14 +191,12 @@
        /// <param name="replaceToken"></param>
        /// <param name="mTimeout"></param>
        /// <returns></returns>
        static ResponsePackNew RequestHttpsBase(Method method, string apiPath, string bodyParameterJson = null, Dictionary<string, object> queryDictionary = null, Dictionary<string, object> urlSegmentDictionary = null, string urlHead = "", string replaceToken = "", int mTimeout = 10)
        static ResponsePackNew RequestHttpsBase (Method method, string apiPath, string bodyParameterJson = null, Dictionary<string, object> queryDictionary = null, Dictionary<string, object> urlSegmentDictionary = null, string urlHead = "", string replaceToken = "", int mTimeout = 10)
        {
            #region HttpWebRequest
            try
            {
#region HttpWebRequest
            try {
                if (string.IsNullOrEmpty(urlHead))
                {
                if (string.IsNullOrEmpty (urlHead)) {
                    urlHead = GlobalRequestHttpsHost;
                }
                string requestFullUrl = urlHead + apiPath;
@@ -166,86 +206,67 @@
                //string requestFullUrl = GlobalRequestHttpsHost + apiPath;
                ////**************测试**************
                RestClient client = new RestClient(requestFullUrl);
                RestClient client = new RestClient (requestFullUrl);
                RestRequest request = new RestRequest(method);
                RestRequest request = new RestRequest (method);
                request.Timeout = mTimeout * 1000;
                request.AddHeader("content-type", "application/json");
                request.AddHeader ("content-type", "application/json");
                if (string.IsNullOrEmpty(replaceToken))
                {
                    if(MainPage.LoginUser != null)
                    {/* 如果不需要验证Token可以不用传入 */
                        request.AddHeader("Authorization",  MainPage.LoginUser.LoginTokenString);
                if (string.IsNullOrEmpty (replaceToken)) {
                    if (MainPage.LoginUser != null) {/* 如果不需要验证Token可以不用传入 */
                        request.AddHeader ("Authorization", MainPage.LoginUser.LoginTokenString);
                    }
                }
                else
                {
                    request.AddHeader("Authorization", replaceToken);
                }
                if (bodyParameterJson != null)
                {
                    request.AddParameter("application/json", bodyParameterJson, ParameterType.RequestBody);
                } else {
                    request.AddHeader ("Authorization", replaceToken);
                }
                if (queryDictionary != null)
                {
                    foreach (var data in queryDictionary)
                    {
                        request.AddQueryParameter(data.Key, data.Value.ToString());
                if (bodyParameterJson != null) {
                   request.AddParameter ("application/json", bodyParameterJson, ParameterType.RequestBody);
                }
                if (queryDictionary != null) {
                    foreach (var data in queryDictionary) {
                        request.AddQueryParameter (data.Key, data.Value.ToString ());
                    }
                }
                if (urlSegmentDictionary != null)
                {
                    foreach (var data in urlSegmentDictionary)
                    {
                        request.AddUrlSegment(data.Key, data.Value.ToString());
                if (urlSegmentDictionary != null) {
                    foreach (var data in urlSegmentDictionary) {
                        request.AddUrlSegment (data.Key, data.Value.ToString ());
                    }
                }
                IRestResponse response = client.Execute(request);
                if (response.StatusCode == HttpStatusCode.OK)
                {
                    try
                    {
                        ResponsePackNew revertObj = new ResponsePackNew() { };
                        revertObj = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponsePackNew>(response.Content);
                IRestResponse response = client.Execute (request);
                if (response.StatusCode == HttpStatusCode.OK) {
                    try {
                        ResponsePackNew revertObj = new ResponsePackNew () { };
                        revertObj = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponsePackNew> (response.Content);
                        //*****一些判空处理*****************
                        if (revertObj.Code == null)
                        {
                        if (revertObj.Code == null) {
                            revertObj.Code = StateCode.DATA_EXCEPTION;
                        }
                        if (revertObj.Data == null)
                        {
                        if (revertObj.Data == null) {
                            revertObj.Data = "";
                        }
                        //*****一些判空处理*****************
                        return revertObj;
                    } catch (Exception ex) {
                        Utlis.WriteLine (ex.Message);
                        return new ResponsePackNew () { Code = StateCode.DATA_EXCEPTION };
                    }
                    catch (Exception ex)
                    {
                        Utlis.WriteLine(ex.Message);
                        return new ResponsePackNew() { Code = StateCode.DATA_EXCEPTION };
                    }
                }
                else
                {
                    Utlis.WriteLine(response.Content);
                    return new ResponsePackNew() { Code = StateCode.NETWORK_ERROR };
                } else {
                    Utlis.WriteLine (response.Content);
                    return new ResponsePackNew () { Code = StateCode.NETWORK_ERROR };
                }
            }
            catch (Exception ex)
            {
                Utlis.WriteLine(ex.Message);
                return new ResponsePackNew() { Code = StateCode.NETWORK_ERROR };
            } catch (Exception ex) {
                Utlis.WriteLine (ex.Message);
                return new ResponsePackNew () { Code = StateCode.NETWORK_ERROR };
            }
            #endregion
#endregion
        }
@@ -262,18 +283,15 @@
        /// <param name="replaceToken"></param>
        /// <param name="mTimeout"></param>
        /// <returns></returns>
        public static ResponsePackNew RequestHttps(Method method, string apiPath, string bodyParameterJson = null, Dictionary<string, object> queryDictionary = null, Dictionary<string, object> urlSegmentDictionary = null, string urlHead = "", string replaceToken = "", int mTimeout = 10)
        public static ResponsePackNew RequestHttps (Method method, string apiPath, string bodyParameterJson = null, Dictionary<string, object> queryDictionary = null, Dictionary<string, object> urlSegmentDictionary = null, string urlHead = "", string replaceToken = "", int mTimeout = 10)
        {
            var responsePackNew = RequestHttpsBase(method, apiPath, bodyParameterJson, queryDictionary, urlSegmentDictionary, urlHead, replaceToken, mTimeout);
            var responsePackNew = RequestHttpsBase (method, apiPath, bodyParameterJson, queryDictionary, urlSegmentDictionary, urlHead, replaceToken, mTimeout);
            //*****************Token过期处理*****************
            if (responsePackNew.Code == StateCode.TOKEN_EXPIRED)
            {
            if (responsePackNew.Code == StateCode.TOKEN_EXPIRED) {
                //刷新Token
                if (RefreshToken()) {
                    return RequestHttpsBase(method, apiPath, bodyParameterJson, queryDictionary, urlSegmentDictionary, urlHead, replaceToken, mTimeout);
                }
                else
                {
                if (RefreshToken ()) {
                    return RequestHttpsBase (method, apiPath, bodyParameterJson, queryDictionary, urlSegmentDictionary, urlHead, replaceToken, mTimeout);
                } else {
                    return responsePackNew;
                }
            }
@@ -286,28 +304,23 @@
        /// 刷新Token
        /// </summary>
        /// <returns></returns>
        static bool RefreshToken()
        static bool RefreshToken ()
        {
            try
            {
                var requestJson = GetSignRequestJson(new RefreshTokenObj()
                {
            try {
                var requestJson = GetSignRequestJson (new RefreshTokenObj () {
                    refreshToken = MainPage.LoginUser.RefreshToken,
                });
                var revertObj = RequestHttpsBase(Method.POST, NewAPI.API_POST_Login, requestJson);
                if (revertObj.Code == StateCode.SUCCESS)
                {
                    var revertData = Newtonsoft.Json.JsonConvert.DeserializeObject<UserLoginRes>(revertObj.Data.ToString());
                var revertObj = RequestHttpsBase (Method.POST, NewAPI.API_POST_Login, requestJson);
                if (revertObj.Code == StateCode.SUCCESS) {
                    var revertData = Newtonsoft.Json.JsonConvert.DeserializeObject<UserLoginRes> (revertObj.Data.ToString ());
                    MainPage.LoginUser.LoginTokenString = revertData.headerPrefix + revertData.accessToken;
                    MainPage.LoginUser.RefreshToken = revertData.refreshToken;
                    MainPage.LoginUser.LastTime = DateTime.Now;
                    MainPage.LoginUser.SaveUserInfo();
                    MainPage.LoginUser.SaveUserInfo ();
                    return true;
                }
                return false;
            }
            catch
            {
            } catch {
                return false;
            }
        }
@@ -322,13 +335,11 @@
        /// <param name="replaceToken"></param>
        /// <param name="mTimeout"></param>
        /// <returns></returns>
        public static byte[] RequestHttpsDownload(string apiPath, string bodyParameterJson = null, Dictionary<string, object> queryDictionary = null, string urlHead = "", string replaceToken = "", int mTimeout = 20)
        public static byte [] RequestHttpsDownload (string apiPath, string bodyParameterJson = null, Dictionary<string, object> queryDictionary = null, string urlHead = "", string replaceToken = "", int mTimeout = 20)
        {
            #region RestRequest
            try
            {
                if (string.IsNullOrEmpty(urlHead))
                {
#region RestRequest
            try {
                if (string.IsNullOrEmpty (urlHead)) {
                    urlHead = GlobalRequestHttpsHost;
                }
                string requestFullUrl = urlHead + apiPath;
@@ -337,45 +348,36 @@
                //string requestFullUrl = GlobalRequestHttpsHost + apiPath;
                ////**************测试**************
                RestClient client = new RestClient(requestFullUrl);
                RestRequest request = new RestRequest(Method.POST);
                RestClient client = new RestClient (requestFullUrl);
                RestRequest request = new RestRequest (Method.POST);
                request.Timeout = mTimeout * 1000;
                request.AddHeader("content-type", "application/json");
                request.AddHeader ("content-type", "application/json");
                if (string.IsNullOrEmpty(replaceToken))
                {
                    if ( MainPage.LoginUser != null)
                    {/* 如果不需要验证Token可以不用传入 */
                        request.AddHeader("Authorization",  MainPage.LoginUser.LoginTokenString);
                if (string.IsNullOrEmpty (replaceToken)) {
                    if (MainPage.LoginUser != null) {/* 如果不需要验证Token可以不用传入 */
                        request.AddHeader ("Authorization", MainPage.LoginUser.LoginTokenString);
                    }
                }
                else
                {
                    request.AddHeader("Authorization", replaceToken);
                } else {
                    request.AddHeader ("Authorization", replaceToken);
                }
                if (bodyParameterJson != null)
                {
                    request.AddParameter("application/json", bodyParameterJson, ParameterType.RequestBody);
                if (bodyParameterJson != null) {
                    request.AddParameter ("application/json", bodyParameterJson, ParameterType.RequestBody);
                }
                if (queryDictionary != null)
                {
                    foreach (var data in queryDictionary)
                    {
                        request.AddQueryParameter(data.Key, data.Value.ToString());
                if (queryDictionary != null) {
                    foreach (var data in queryDictionary) {
                        request.AddQueryParameter (data.Key, data.Value.ToString ());
                    }
                }
                IRestResponse response = client.Execute(request);
                IRestResponse response = client.Execute (request);
                return response.RawBytes;
            }
            catch (Exception ex)
            {
                Utlis.WriteLine(ex.Message);
            } catch (Exception ex) {
                Utlis.WriteLine (ex.Message);
                return null;
            }
            #endregion
#endregion
        }
@@ -391,14 +393,12 @@
        /// <param name="replaceToken"></param>
        /// <param name="mTimeout"></param>
        /// <returns></returns>
        public static ResponsePackNew RequestHttpsUpload(Method method, string apiPath, object bodyParameterObject = null, Dictionary<string, object> queryDictionary = null, Dictionary<string, object> urlSegmentDictionary = null, string urlHead = "", string replaceToken = "", int mTimeout = 10)
        public static ResponsePackNew RequestHttpsUpload (Method method, string apiPath, object bodyParameterObject = null, Dictionary<string, object> queryDictionary = null, Dictionary<string, object> urlSegmentDictionary = null, string urlHead = "", string replaceToken = "", int mTimeout = 20)
        {
            #region HttpWebRequest
            try
            {
#region HttpWebRequest
            try {
                if (string.IsNullOrEmpty(urlHead))
                {
                if (string.IsNullOrEmpty (urlHead)) {
                    urlHead = GlobalRequestHttpsHost;
                }
                string requestFullUrl = urlHead + apiPath;
@@ -407,81 +407,62 @@
                //string requestFullUrl = GlobalRequestHttpsHost + apiPath;
                ////**************测试**************
                RestClient client = new RestClient(requestFullUrl);
                //client.Timeout = mTimeout * 1000;
                RestRequest request = new RestRequest(method);
                RestClient client = new RestClient (requestFullUrl);
                RestRequest request = new RestRequest (method);
                request.Timeout = mTimeout * 1000;
                //request.AddHeader ("content-type", "application/json");
                request.AddHeader("content-type", "application/octet-stream");
                request.AddHeader ("content-type", "application/octet-stream");
                if (string.IsNullOrEmpty(replaceToken))
                {
                    if ( MainPage.LoginUser != null)
                    {/* 如果不需要验证Token可以不用传入 */
                        request.AddHeader("Authorization",  MainPage.LoginUser.LoginTokenString);
                if (string.IsNullOrEmpty (replaceToken)) {
                    if (MainPage.LoginUser != null) {/* 如果不需要验证Token可以不用传入 */
                        request.AddHeader ("Authorization", MainPage.LoginUser.LoginTokenString);
                    }
                }
                else
                {
                    request.AddHeader("Authorization", replaceToken);
                } else {
                    request.AddHeader ("Authorization", replaceToken);
                }
                if (bodyParameterObject != null)
                {
                    request.AddParameter("application/octet-stream", bodyParameterObject, ParameterType.RequestBody);
                if (bodyParameterObject != null) {
                    request.AddParameter ("application/octet-stream", bodyParameterObject, ParameterType.RequestBody);
                }
                if (queryDictionary != null)
                {
                    foreach (var data in queryDictionary)
                    {
                        request.AddQueryParameter(data.Key, data.Value.ToString());
                if (queryDictionary != null) {
                    foreach (var data in queryDictionary) {
                        request.AddQueryParameter (data.Key, data.Value.ToString ());
                    }
                }
                if (urlSegmentDictionary != null)
                {
                    foreach (var data in urlSegmentDictionary)
                    {
                        request.AddUrlSegment(data.Key, data.Value.ToString());
                if (urlSegmentDictionary != null) {
                    foreach (var data in urlSegmentDictionary) {
                        request.AddUrlSegment (data.Key, data.Value.ToString ());
                    }
                }
                IRestResponse response = client.Execute(request);
                if (response.StatusCode == HttpStatusCode.OK)
                {
                    try
                    {
                        ResponsePackNew revertObj = new ResponsePackNew() { };
                        revertObj = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponsePackNew>(response.Content);
                        if (revertObj.Code == null)
                        {
                IRestResponse response = client.Execute (request);
                if (response.StatusCode == HttpStatusCode.OK) {
                    try {
                        ResponsePackNew revertObj = new ResponsePackNew () { };
                        revertObj = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponsePackNew> (response.Content);
                        if (revertObj.Code == null) {
                            revertObj.Code = StateCode.DATA_EXCEPTION;
                        }
                        ////统一转成大写
                        //revertObj.StateCode = revertObj.StateCode.ToUpper ();
                        return revertObj;
                    } catch (Exception ex) {
                        Utlis.WriteLine (ex.Message);
                        return new ResponsePackNew () { Code = StateCode.DATA_EXCEPTION };
                    }
                    catch (Exception ex)
                    {
                        Utlis.WriteLine(ex.Message);
                        return new ResponsePackNew() { Code = StateCode.DATA_EXCEPTION };
                    }
                }
                else
                {
                    Utlis.WriteLine(response.Content);
                    return new ResponsePackNew() { Code = StateCode.NETWORK_ERROR };
                } else {
                    Utlis.WriteLine (response.Content);
                    return new ResponsePackNew () { Code = StateCode.NETWORK_ERROR };
                }
            }
            catch (Exception ex)
            {
                Utlis.WriteLine(ex.Message);
                return new ResponsePackNew() { Code = StateCode.NETWORK_ERROR };
            } catch (Exception ex) {
                Utlis.WriteLine (ex.Message);
                return new ResponsePackNew () { Code = StateCode.NETWORK_ERROR };
            }
            #endregion
#endregion
        }
@@ -495,47 +476,46 @@
        /// <param name="replaceToken"></param>
        /// <param name="mTimeout"></param>
        /// <returns></returns>
        public static byte[] HttpsDownload(string requestFullUrl, int mTimeout = 30)
        public static byte [] HttpsDownload (string requestFullUrl, int mTimeout = 30)
        {
            #region RestRequest
            try
            {
                RestClient client = new RestClient(requestFullUrl);
                RestRequest request = new RestRequest(Method.GET);
#region RestRequest
            try {
                RestClient client = new RestClient (requestFullUrl);
                RestRequest request = new RestRequest (Method.GET);
                request.Timeout = mTimeout * 1000;
                IRestResponse response = client.Execute(request);
                IRestResponse response = client.Execute (request);
                return response.RawBytes;
            }
            catch (Exception ex)
            {
                Utlis.WriteLine(ex.Message);
            } catch (Exception ex) {
                Utlis.WriteLine (ex.Message);
                return null;
            }
            #endregion
#endregion
        }
        #endregion
#endregion
        #region **********签名校验**********
        /// <summary>
        ///
        /// </summary>
        const string APP_KEY = "HDL-HOME-APP-TEST";
        /// <summary>
        ///
        /// </summary>
        const string SECRET_KEY = "WeJ8TY88vbakCcnvH8G1tDUqzLWY8yss";
#region **********签名校验**********
        ///// <summary>
        /////
        ///// </summary>
        //const string APP_KEY = "HDL-HOME-APP-TEST";
        ///// <summary>
        /////
        ///// </summary>
        //const string SECRET_KEY = "WeJ8TY88vbakCcnvH8G1tDUqzLWY8yss";
        /// <summary>
        /// 获取当前时间戳值
        /// </summary>
        /// <returns></returns>
        static string GetTimestamp()
        static string GetTimestamp ()
        {
            System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 当地时区
            return ((long)(DateTime.Now - startTime).TotalMilliseconds).ToString(); // 相差秒数
            System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime (new System.DateTime (1970, 1, 1)); // 当地时区
            return ((long)(DateTime.Now - startTime).TotalMilliseconds).ToString (); // 相差秒数
            //return ((long)(DateTime.Now - startTime).TotalSeconds).ToString(); // 相差秒数
        }
@@ -544,15 +524,29 @@
        /// </summary>
        /// <param name="signstr"></param>
        /// <returns></returns>
        static string SignMD5Encrypt(string s)
        static string SignMD5Encrypt (string s)
        {
            byte[] sign = MD5.Create().ComputeHash(UTF8Encoding.UTF8.GetBytes(s));
            byte [] sign = MD5.Create ().ComputeHash (UTF8Encoding.UTF8.GetBytes (s));
            string signstr = string.Empty;
            foreach (byte item in sign)
            {
                signstr += item.ToString("X2");
            foreach (byte item in sign) {
                signstr += item.ToString ("X2");
            }
            return signstr.ToLower();
            return signstr.ToLower ();
        }
        /// <summary>
        /// 判断当前值是否需要参与签名,保持跟云端一致
        /// 空字符串不参与
        /// 数组,集合,对象不参与
        /// </summary>
        /// <param name="valueStr"></param>
        /// <returns></returns>
        static bool IfValueNeedSign (string valueStr)
        {
            if (string.IsNullOrEmpty (valueStr) || valueStr.StartsWith ("{") || valueStr.StartsWith ("[")) {
                return false;
            }
            return true;
        }
        /// <summary>
@@ -561,62 +555,50 @@
        /// 计算sign签名
        /// </summary>
        /// <returns></returns>
        public static string GetSignRequestJson(object requestObj)
        public static string GetSignRequestJson (object requestObj)
        {
            try
            {
            try {
                //1. 将model实体转为Dictionary<string, object>
                var paramDictionary = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, object>>(Newtonsoft.Json.JsonConvert.SerializeObject(requestObj));
                var paramDictionary = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, object>> (Newtonsoft.Json.JsonConvert.SerializeObject (requestObj));
                //2. 计算sign
                if (paramDictionary != null)
                {
                    paramDictionary.Add("appKey", APP_KEY);
                    paramDictionary.Add("timestamp", GetTimestamp());
                if (paramDictionary != null) {
                    paramDictionary.Add ("appKey", APP_KEY);
                    paramDictionary.Add ("timestamp", GetTimestamp ());
                    //2.1 字典升序
                    paramDictionary = paramDictionary.OrderBy(o => o.Key).ToDictionary(o => o.Key, p => p.Value);
                    paramDictionary = paramDictionary.OrderBy (o => o.Key).ToDictionary (o => o.Key, p => p.Value);
                    //2.2 拼接按URL键值对
                    string str = string.Empty;
                    foreach (KeyValuePair<string, object> item in paramDictionary)
                    {
                    foreach (KeyValuePair<string, object> item in paramDictionary) {
                        //Value为null不参加校验
                        if (item.Value != null)
                        {
                            //Value.ToString()为null或者""也不参加校验
                            if (!string.IsNullOrEmpty(item.Value.ToString()))
                            {
                        if (item.Value != null) {
                            //检测当前参数是否需要参与校验
                            if (IfValueNeedSign (item.Value.ToString ())) {
                                //如果是bool类型,要转小写
                                if (item.Value is bool)
                                {
                                    str += item.Key + "=" + item.Value.ToString().ToLower() + "&";
                                }
                                else
                                {
                                    str += item.Key + "=" + item.Value.ToString() + "&";
                                if (item.Value is bool) {
                                    str += item.Key + "=" + item.Value.ToString ().ToLower () + "&";
                                } else {
                                    str += item.Key + "=" + item.Value.ToString () + "&";
                                }
                            }
                        }
                    }
                    //2.3 拼接SECRET_KEY
                    str = str.Substring(0, str.Length - 1) + SECRET_KEY;
                    str = str.Substring (0, str.Length - 1) + SECRET_KEY;
                    //2.4 MD5转换+转小写
                    var signstr = SignMD5Encrypt(str);
                    paramDictionary.Add("sign", signstr);
                    var signResult = Newtonsoft.Json.JsonConvert.SerializeObject(paramDictionary);
                    var signstr = SignMD5Encrypt (str);
                    paramDictionary.Add ("sign", signstr);
                    var signResult = Newtonsoft.Json.JsonConvert.SerializeObject (paramDictionary);
                    return signResult;
                }
                else
                {
                } else {
                    return "";
                }
            }
            catch
            {
            } catch {
                return "";
            }
        }
        #endregion
#endregion
    }
    /// <summary>