Example #1
0
        /// <summary>
        /// 处理远程请求方法,并返回需要的实体
        /// </summary>
        /// <typeparam name="T">需要返回的实体类型</typeparam>
        /// <param name="request">远程请求组件的request基本信息</param>
        /// <param name="respColumnName">响应实体中的内容列表</param>
        /// <param name="funcFormat">获取实体格式化方法</param>
        /// <returns>实体类型</returns>
        public async Task <T> RestCommonAsync <T>(OsHttpRequest request, string respColumnName,
                                                  Func <HttpResponseMessage, Task <T> > funcFormat = null)
            where T : ZPayBaseResp, new()
        {
            var t = default(T);

            try
            {
                request.AddressUrl = string.Concat(m_ApiUrl, "?charset=", ApiConfig.Charset);

                request.RequestSet = r =>
                {
                    if (r.Content == null)
                    {
                        return;
                    }
                    var contentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded")
                    {
                        CharSet = ApiConfig.Charset
                    };
                    r.Content.Headers.ContentType = contentType;
                };

                var resp = await request.RestSend();

                if (resp.IsSuccessStatusCode)
                {
                    if (funcFormat != null)
                    {
                        t = await funcFormat(resp);
                    }
                    else
                    {
                        var contentStr = await resp.Content.ReadAsStringAsync();

                        var resJsonObj = JObject.Parse(contentStr);
                        if (resJsonObj == null)
                        {
                            return new T()
                                   {
                                       ret = (int)ResultTypes.ObjectStateError,
                                       msg = "基础请求响应不正确,请检查地址或者网络是否正常!"
                                   }
                        }
                        ;

                        t = resJsonObj[respColumnName].ToObject <T>();
                        if (t.IsSuccess())
                        {
                            var sign = resJsonObj["sign"].ToString();

                            var signContent = GetCehckSignContent(respColumnName, contentStr);

                            CheckSign(signContent, sign, t);
                        }
                        else
                        {
                            t.msg = string.Concat(t.msg, "-", t.sub_msg);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                var logCode = LogUtil.Error(string.Concat("基类请求出错,错误信息:", ex.Message), "Z_RestCommon",
                                            ModuleNames.SocialCenter);
                t = new T()
                {
                    ret = (int)ResultTypes.InnerError,
                    msg = string.Concat("基类请求出错,请检查网络是否正常,错误码:", logCode)
                };
            }
            return(t);
        }
Example #2
0
 /// <summary>
 ///  执行请求方法
 /// </summary>
 /// <param name="client"></param>
 /// <param name="request"></param>
 /// <param name="completionOption"></param>
 /// <returns></returns>
 public static Task <HttpResponseMessage> RestSend(this HttpClient client, OsHttpRequest request,
                                                   HttpCompletionOption completionOption)
 {
     return(RestSend(client, request, completionOption, CancellationToken.None));
 }
 /// <summary>
 ///
 /// </summary>
 /// <typeparam name="TResp"></typeparam>
 /// <param name="request"></param>
 /// <param name="client"></param>
 /// <param name="moduleName"></param>
 /// <returns></returns>
 public static async Task <TResp> RestCommonJson <TResp>(this OsHttpRequest request, HttpClient client = null,
                                                         string moduleName = ModuleNames.Default)
     where TResp : ResultMo, new()
 {
     return(await RestCommon(request, JsonFormat <TResp>, client, moduleName));
 }
Example #4
0
 /// <summary>
 /// 同步的请求方式
 /// </summary>
 /// <param name="request">请求的参数</param>
 /// <param name="client"></param>
 /// <returns>自定义的Response结果</returns>
 public static Task <HttpResponseMessage> RestSend(this OsHttpRequest request, HttpClient client = null)
 {
     return(RestSend(request, HttpCompletionOption.ResponseContentRead, CancellationToken.None, client));
 }