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>();
    
            }
  • 相关阅读:
    ArcGIS Server GP服务发布与测试(基础版)
    【转】arcgis server site 快速恢复与重建
    ArGIS Server 服务的更新
    ArcMap中,如何查看当前工具是否在执行?如何将工具调到前台来执行?
    【转】ArcGIS 创建切片缓存方法工具总结
    ArcGIS Server 增加缓存路径
    修改ArcGIS Server Account / 站点管理员的 账号、密码
    ArcGIS Server 创建站点失败
    ArcGIS Server,4000端口被占用
    JS 中如何判断字符串类型的数字
  • 原文地址:https://www.cnblogs.com/zhengwk/p/5435911.html
Copyright © 2011-2022 走看看