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>();
    
            }
  • 相关阅读:
    Path Sum II
    Convert Sorted Array to Binary Search Tree
    Construct Binary Tree from Inorder and Postorder Traversal
    Construct Binary Tree from Preorder and Inorder Traversal
    Maximum Depth of Binary Tree
    Binary Tree Zigzag Level Order Traversal
    Binary Tree Level Order Traversal
    Same Tree
    Validate Binary Search Tree
    Binary Tree Inorder Traversal
  • 原文地址:https://www.cnblogs.com/zhengwk/p/5435911.html
Copyright © 2011-2022 走看看