(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 = ;
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 == )
{
resData = ret.ResData; totalNum = ret.ResData.Value<int>("totalNum");
JContainer dataResult = ret.ResData.Value<JContainer>("dataResult"); return dataResult.ToList<T>();
}
totalNum = ;
return new List<T>();
}
catch
{
totalNum = ;
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 == )
{
resData = ret.ResData; totalNum = ret.ResData.Value<int>("totalNum"); //取值
JContainer dataResult = ret.ResData.Value<JContainer>("dataResult"); //取值 return dataResult.ToList<T>();
}
}
totalNum = ;
return new List<T>(); }

RestSharp使用备忘的更多相关文章

  1. GIS部分理论知识备忘随笔

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.高斯克吕格投影带换算 某坐标的经度为112度,其投影的6度带和3度带 ...

  2. python序列,字典备忘

    初识python备忘: 序列:列表,字符串,元组len(d),d[id],del d[id],data in d函数:cmp(x,y),len(seq),list(seq)根据字符串创建列表,max( ...

  3. Vi命令备忘

    备忘 Ctrl+u:向文件首翻半屏: Ctrl+d:向文件尾翻半屏: Ctrl+f:向文件尾翻一屏: Ctrl+b:向文件首翻一屏: Esc:从编辑模式切换到命令模式: ZZ:命令模式下保存当前文件所 ...

  4. ExtJs4常用配置方法备忘

    viewport布局常用属性 new Ext.Viewport({ layout: "border", renderTo: Ext.getBody(), defaults: { b ...

  5. [备忘] Automatically reset Windows Update components

    这两天遇到Windows 10的更新问题,官方有一个小工具,可以用来修复Windows Update的问题,备忘如下 https://support.microsoft.com/en-us/kb/97 ...

  6. ECMAScript 5(ES5)中bind方法简介备忘

    一直以来对和this有关的东西模糊不清,譬如call.apply等等.这次看到一个和bind有关的笔试题,故记此文以备忘. bind和call以及apply一样,都是可以改变上下文的this指向的.不 ...

  7. MFC通过txt查找文件并进行复制-备忘

    MFC基于对话框的Demo txt中每行一个23位的卡号. 文件夹中包含以卡号命名的图像文件.(fpt或者bmp文件) 要求遍历文件夹,找到txt中卡号所对应的图像文件,并复制出来. VC6.0写的. ...

  8. php 相关模块备忘

    在安装php的时候,不管是编译安装: ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc -- ...

  9. 『备忘』HttpWebRequest 在 POST 提交时, 标头(Headers)丢失原因

    近来研究 HttpWebRequest —— 辅助类完成时,POST JSON数据 总会 丢失标头(Headers). HttpWebRequest POST JSON数据,分如下几步: > 将 ...

随机推荐

  1. Manacher(hdu3068最长回文)

    浅谈manacher算法 manacher算法是我在网上无意中找到的,主要是用来求某个字符串的最长回文子串. 不过网上的版本还不太成熟,我就修改了下. 不要被manacher这个名字吓倒了,其实man ...

  2. CreateJS介绍-了解CreateJS

    1.CreateJS 一款HTML5游戏开发引擎 CreateJS 是一套可以构建丰富交互体验的 HTML5 游戏的开源工具包,旨在降低 HTML5 项目的开发难度和成本,让开发者以熟悉的方式打造更具 ...

  3. PAT甲级——1107 Social Clusters (并查集)

    本文同步发布在CSDN:https://blog.csdn.net/weixin_44385565/article/details/90409731 1107 Social Clusters (30  ...

  4. SQL 主键

    主键: 1.任意两行都不具有的相同的主键值 2.没一列都必须有一个主键值(主键列不允许NULL值) 3.主键列中的值不允许修改或更新 4.主键值不能重用(如果某行从表中删除,它的主键不能赋给以后的新行 ...

  5. C# Monitor与线程同步

    Monitor对象(C#知识点总结系列:4.C#中Monitor和Lock以及区别) 1.Monitor.Enter(object)方法是获取锁,Monitor.Exit(object)方法是释放锁, ...

  6. 练习三十二:用python实现:按相反的顺序输出列表的每一位值

    用python实现:按相反的顺序输出列表的每一位值 1. 使用list[::-1] list1 = ["one","two","three" ...

  7. nginx一个简单的反向代理设置

    location /aaaaa/ { proxy_pass http://localhost:8080/aaaaa/; } 经过配置,现在访问 http://localhost/aaaaa/   就会 ...

  8. sql server 2008r2 备份到局势网共享硬盘

    首先,如果没有启用xp_cmdshell,请执行以下启用: ; ; RECONFIGURE; 1.创建映射: exec master..xp_cmdshell 'net use \\192.168.9 ...

  9. SpringBoot整合Redis使用Restful风格实现CRUD功能

    前言 本篇文章主要介绍的是SpringBoot整合Redis,使用Restful风格实现的CRUD功能. Redis 介绍 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-valu ...

  10. python学习《一》

    从词篇博客开始,记录python3.0学习笔记 python3里    字符串用双引号,或者单引号,包起来 3双引号和3单引号   代表换行