/// <summary> /// 请求API接口 /// </summary> /// <param name="token">访问令牌</param> /// <param name="action">接口名称</param> /// <param name="parms">接口参数</param> /// <returns></returns> public ElemeApiRetModel CallApi(string token, string action, Dictionary <string, object> parms) { ElemeApiRetModel apiRetVal = null; parms = parms ?? new Dictionary <string, object>(); try { //构建接口公用参数 var m = new Dictionary <string, object>(); m.Add("app_key", ConfigUtil.EleAppKey); m.Add("timestamp", TimeUtil.SecondTicks_1970); //构建接口参数 var p = new SortedDictionary <string, object>(); p.Add("nop", ElemeConsts.API_VER); p.Add("id", StringUtil.GuidStr()); p.Add("action", action); p.Add("token", token); p.Add("metas", m); p.Add("params", parms); //构建接口签名参数并签名 var sa = new SortedDictionary <string, object>(); foreach (var cm in m) { sa.Add(cm.Key, cm.Value); } if (parms != null && parms.Count > 0) { foreach (var pm in parms) { sa.Add(pm.Key, pm.Value); } } p.Add("signature", SignUtil.GetEleSign(sa, ConfigUtil.EleAppSecret, true, action, token)); //执行接口请求并处理返回信息 var responseText = HttpRequestUtil.HttpPost(ElemeConsts.GET_API_URL, p.ToJson(), true); if (!string.IsNullOrWhiteSpace(responseText)) { apiRetVal = JsonUtil.ToObject <ElemeApiRetModel>(responseText); if (apiRetVal == null || apiRetVal.error != null) { LogUtil.Error(string.Format("返回错误信息:{0},请求参数:{1}", responseText, p.ToJson())); } else { LogUtil.Info(string.Format("调用接口:{0},成功返回信息:{1}", action, responseText)); } } else { LogUtil.Error(string.Format("返回信息为空,请求参数:{0}", parms.ToJson())); } } catch (Exception ex) { LogUtil.Error(string.Format("请求接口失败,参考信息:{0}", ex.Message)); } return(apiRetVal); }