zoukankan      html  css  js  c++  java
  • RestSharp使用备忘

    (1)一般调用:

    public static List<T> Execute<T>(string resourceUrl, object obj, out int totalNum)
            {
                var client = new RestClient(baseUrl);
                var request = new RestRequest(resourceUrl, Method.POST);
    
                Type t = obj.GetType();
                foreach (PropertyInfo pi in t.GetProperties())
                {
                    string Name = pi.Name;
                    string Value = string.Empty;
                    if (pi.GetValue(obj, null) != null)
                    {
                        Value = pi.GetValue(obj, null).ToString();
                    }
                    request.AddQueryParameter(Name, Value);
                }
                IRestResponse response = client.Execute(request);
    
                return RosolveResponse<T>(response, out totalNum);
            }

    (2)传json参数(这里用到了Newtonsoft.Json):

    public static List<T> ExecuteJson<T>(string resourceUrl, object obj, out int totalNum)
            {
                var client = new RestClient(baseUrl);
                var request = new RestRequest(resourceUrl, Method.POST);
                
                string jsonToSend = JsonConvert.SerializeObject(obj);
    
                request.AddParameter("application/json; charset=utf-8", jsonToSend, ParameterType.RequestBody);
                request.RequestFormat = DataFormat.Json;
    
                IRestResponse response = client.Execute(request);
    
                return RosolveResponse<T>(response, out totalNum);
    }

    这一段用HttpWebRequest实现是这样的:

            public static List<T> ExecuteJson<T>(string resourceUrl, object obj, out int totalNum)
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(baseUrl + resourceUrl);
                request.Method = "post";
                request.ContentType = "application/json;charset=UTF-8";
    
                var stream = request.GetRequestStream();
                using (var writer = new StreamWriter(stream))
                {
                    writer.Write(JsonConvert.SerializeObject(obj));
                    writer.Flush();
                }
    
                HttpWebResponse response = null;
                try
                {
                    response = (HttpWebResponse)request.GetResponse();
                }
                catch
                {
                    totalNum = 0;
                    return new List<T>();
                }
    
                StreamReader responseReader = null;
                string responseData = "";
    
                try
                {
                    responseReader = new StreamReader(response.GetResponseStream());
                    responseData = responseReader.ReadToEnd();
    
                    RestResult ret = JsonConvert.DeserializeObject<RestResult>(responseData);
                    JContainer resData;
    
                    if (ret.Code == 200)
                    {
                        resData = ret.ResData;
    
                        totalNum = ret.ResData.Value<int>("totalNum");
                        JContainer dataResult = ret.ResData.Value<JContainer>("dataResult");
    
                        return dataResult.ToList<T>();
                    }
                    totalNum = 0;
                    return new List<T>();
                }
                catch
                {
                    totalNum = 0;
                    return new List<T>();
                }
                finally
                {
                    response.GetResponseStream().Close();
                    responseReader.Close();
                    responseReader = null;
                }
            }

    附:RosolveResponse函数(这里用到了Newtonsoft.Json):

    private static List<T> RosolveResponse<T>(IRestResponse response, out int totalNum)
            {
                if (response.StatusCode == HttpStatusCode.OK)
                {
                    RestResult ret = JsonConvert.DeserializeObject<RestResult>(response.Content);
                    JContainer resData;
    
                    if (ret.Code == 200)
                    {
                        resData = ret.ResData;
    
                        totalNum = ret.ResData.Value<int>("totalNum");  //取值
                        JContainer dataResult = ret.ResData.Value<JContainer>("dataResult");  //取值
    
                        return dataResult.ToList<T>();
                    }
                }
                totalNum = 0;
                return new List<T>();
    
            }
  • 相关阅读:
    (22)ASP.NET Core2.2 EF创建模型(索引、备用键、继承、支持字段)
    (21)ASP.NET Core2.2 EF创建模型(关系)
    (20)ASP.NET Core2.2 EF创建模型(必需属性和可选属性、最大长度、并发标记、阴影属性)
    (19)ASP.NET Core2.2 EF创建模型(包含属性和排除属性、主键、生成的值)
    (18)ASP.NET Core2.2 基于现有数据库创建EF模型(反向工程)
    (17)ASP.NET Core2.2 EF基于数据模型创建数据库
    (16)ASP.NET Core2.2 通用主机(HostBuilder)
    (15)ASP.NET Core2.2 Web主机(IWebHostBuilder)
    (14)ASP.NET Core2.2 中的日志记录
    前端也要懂物理 —— 惯性滚动篇
  • 原文地址:https://www.cnblogs.com/zhengwk/p/5435911.html
Copyright © 2011-2022 走看看