コード例 #1
0
        /// <summary>
        /// 使用Get方法调用api
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <param name="url">调用地址</param>
        /// <param name="error">如果是框架识别的错误格式,将返回ErrorObj</param>
        /// <param name="errormsg">如果框架不识别错误格式,返回错误文本</param>
        /// <param name="timeout">超时时间,单位秒</param>
        /// <param name="proxy">代理地址</param>
        /// <returns></returns>
        public static async Task <T> CallAPI <T>(this FrameworkDomain self, string url, ErrorObj error = null, string errormsg = null, int?timeout = null, string proxy = null)
        {
            HttpContent content = null;

            //填充表单数据
            return(await CallAPI <T>(self, url, HttpMethodEnum.GET, content, error, errormsg, timeout, proxy));
        }
コード例 #2
0
        /// <summary>
        ///
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <param name="url">调用地址</param>
        /// <param name="method">调用方式</param>
        /// <param name="postdata">提交字段</param>
        /// <param name="error">如果是框架识别的错误格式,将返回ErrorObj</param>
        /// <param name="errormsg">如果框架不识别错误格式,返回错误文本</param>
        /// <param name="timeout">超时时间,单位秒</param>
        /// <param name="proxy">代理地址</param>
        /// <returns></returns>
        public static async Task <T> CallAPI <T>(this FrameworkDomain self, string url, HttpMethodEnum method, IDictionary <string, string> postdata, ErrorObj error = null, string errormsg = null, int?timeout = null, string proxy = null)
        {
            HttpContent content = null;

            //填充表单数据
            if (!(postdata == null || postdata.Count == 0))
            {
                List <KeyValuePair <string, string> > paras = new List <KeyValuePair <string, string> >();
                foreach (string key in postdata.Keys)
                {
                    paras.Add(new KeyValuePair <string, string>(key, postdata[key]));
                }
                content = new FormUrlEncodedContent(paras);
            }
            return(await CallAPI <T>(self, url, method, content, error, errormsg, timeout, proxy));
        }
コード例 #3
0
        /// <summary>
        ///
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <param name="url">调用地址</param>
        /// <param name="method">调用方式</param>
        /// <param name="postdata">提交的object,会被转成json提交</param>
        /// <param name="error">如果是框架识别的错误格式,将返回ErrorObj</param>
        /// <param name="errormsg">如果框架不识别错误格式,返回错误文本</param>
        /// <param name="timeout">超时时间,单位秒</param>
        /// <param name="proxy">代理地址</param>
        /// <returns></returns>
        public static async Task <T> CallAPI <T>(this FrameworkDomain self, string url, HttpMethodEnum method, object postdata, ErrorObj error = null, string errormsg = null, int?timeout = null, string proxy = null)
        {
            HttpContent content = new StringContent(JsonConvert.SerializeObject(postdata), System.Text.Encoding.UTF8, "application/json");

            return(await CallAPI <T>(self, url, method, content, error, errormsg, timeout, proxy));
        }
コード例 #4
0
        public static async Task <T> CallAPI <T>(this FrameworkDomain self, string url, HttpMethodEnum method, HttpContent content, ErrorObj error = null, string errormsg = null, int?timeout = null, string proxy = null)
        {
            var factory = GlobalServices.GetRequiredService <IHttpClientFactory>();

            try
            {
                if (string.IsNullOrEmpty(url))
                {
                    return(default(T));
                }
                //新建http请求
                var client = factory.CreateClient(self.Name);
                //如果配置了代理,则使用代理
                //设置超时
                if (timeout.HasValue)
                {
                    client.Timeout = new TimeSpan(0, 0, 0, timeout.Value, 0);
                }
                //填充表单数据
                HttpResponseMessage res = null;
                switch (method)
                {
                case HttpMethodEnum.GET:
                    res = await client.GetAsync(url);

                    break;

                case HttpMethodEnum.POST:
                    res = await client.PostAsync(url, content);

                    break;

                case HttpMethodEnum.PUT:
                    res = await client.PutAsync(url, content);

                    break;

                case HttpMethodEnum.DELETE:
                    res = await client.DeleteAsync(url);

                    break;

                default:
                    break;
                }
                T rv = default(T);
                if (res == null)
                {
                    return(rv);
                }
                if (res.IsSuccessStatusCode == true)
                {
                    rv = JsonConvert.DeserializeObject <T>(await res.Content.ReadAsStringAsync());
                }
                else
                {
                    if (res.StatusCode == System.Net.HttpStatusCode.BadRequest)
                    {
                        error = JsonConvert.DeserializeObject <ErrorObj>(await res.Content.ReadAsStringAsync());
                    }
                    else
                    {
                        errormsg = await res.Content.ReadAsStringAsync();
                    }
                }

                return(rv);
            }
            catch (Exception ex)
            {
                errormsg = ex.ToString();
                return(default(T));
            }
        }