Пример #1
0
        /// <summary>
        /// 处理远程请求方法,并返回需要的实体
        /// </summary>
        /// <typeparam name="T">需要返回的实体类型</typeparam>
        /// <param name="request">远程请求组件的request基本信息</param>
        /// <param name="funcFormat">获取实体格式化方法</param>
        /// <returns>实体类型</returns>
        public static T RestCommon <T>(OsHttpRequest request, Func <OsHttpResponse, T> funcFormat = null)
            where T : ResultMo, new()
        {
            T t = default(T);

            try
            {
                OsHttpResponse response = request.ExecuteSync();
                if (response.ResponseStatus == ResponseStatus.Completed ||
                    response.ResponseStatus == ResponseStatus.ErrorButResponse)
                {
                    if (funcFormat != null)
                    {
                        t = funcFormat(response);
                    }
                    else
                    {
                        t = JsonConvert.DeserializeObject <T>(response.Content);
                    }
                    if (!t.IsSuccess)
                    {
                        t.Message = GetErrMsg(t.Ret);
                    }
                }
            }
            catch (Exception ex)
            {
                // ignored
                t = new T()
                {
                    Ret = (int)ResultTypes.InnerError, Message = ex.Message
                };
                LogUtil.Error(string.Concat("基类请求出错,错误信息:", ex.Message), "RestCommon", ModuleNames.SnsCenter);
            }
            return(t ?? new T()
            {
                Ret = 0
            });
        }