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 = ;
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使用备忘的更多相关文章
- GIS部分理论知识备忘随笔
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.高斯克吕格投影带换算 某坐标的经度为112度,其投影的6度带和3度带 ...
- python序列,字典备忘
初识python备忘: 序列:列表,字符串,元组len(d),d[id],del d[id],data in d函数:cmp(x,y),len(seq),list(seq)根据字符串创建列表,max( ...
- Vi命令备忘
备忘 Ctrl+u:向文件首翻半屏: Ctrl+d:向文件尾翻半屏: Ctrl+f:向文件尾翻一屏: Ctrl+b:向文件首翻一屏: Esc:从编辑模式切换到命令模式: ZZ:命令模式下保存当前文件所 ...
- ExtJs4常用配置方法备忘
viewport布局常用属性 new Ext.Viewport({ layout: "border", renderTo: Ext.getBody(), defaults: { b ...
- [备忘] Automatically reset Windows Update components
这两天遇到Windows 10的更新问题,官方有一个小工具,可以用来修复Windows Update的问题,备忘如下 https://support.microsoft.com/en-us/kb/97 ...
- ECMAScript 5(ES5)中bind方法简介备忘
一直以来对和this有关的东西模糊不清,譬如call.apply等等.这次看到一个和bind有关的笔试题,故记此文以备忘. bind和call以及apply一样,都是可以改变上下文的this指向的.不 ...
- MFC通过txt查找文件并进行复制-备忘
MFC基于对话框的Demo txt中每行一个23位的卡号. 文件夹中包含以卡号命名的图像文件.(fpt或者bmp文件) 要求遍历文件夹,找到txt中卡号所对应的图像文件,并复制出来. VC6.0写的. ...
- php 相关模块备忘
在安装php的时候,不管是编译安装: ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc -- ...
- 『备忘』HttpWebRequest 在 POST 提交时, 标头(Headers)丢失原因
近来研究 HttpWebRequest —— 辅助类完成时,POST JSON数据 总会 丢失标头(Headers). HttpWebRequest POST JSON数据,分如下几步: > 将 ...
随机推荐
- 洛谷 P2216 [HAOI2007]理想的正方形
P2216 [HAOI2007]理想的正方形 题目描述 有一个a*b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和最小值的差最小. 输入输出格式 输入格式: 第一 ...
- 管理docker容器
如果在容器中启动sshd,存在开销和攻击面增大的问题.同时也违反了Docker所倡导的一个容器一个进程的原则. docker attach 37d61466c69e \\注意:如果在stdin中exi ...
- TYVJ P2032 「Poetize9」升降梯上 spfa最短路
%%%暴搜出奇迹%%%@SiriusRen 其实我刚开始题读错了,才导致我写图论... spfa跑最短路,开一个node记录状态(pair当然滋磁):所在楼层和槽的位置 以层数为1,槽在0的位置 为初 ...
- 题解 poj3585 Accumulation Degree (树形dp)(二次扫描和换根法)
写一篇题解,以纪念调了一个小时的经历(就是因为边的数组没有乘2 phhhh QAQ) 题目 题目大意:找一个点使得从这个点出发作为源点,流出的流量最大,输出这个最大的流量. 以这道题来介绍二次扫描和换 ...
- 1e9个兵临城下(容斥原理)
链接:https://ac.nowcoder.com/acm/contest/321/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...
- Net Core -- 配置Kestrel端口
Net Core -- 配置Kestrel端口 Kestrel介绍 在Asp.Net Core中,我们的web application 其实是运行在Kestrel服务上,它是一个基于libuv开源的跨 ...
- keil-rtx
OS:任务级设计,任务间耦合小:改变裸机前后台设计方案中后台任务轮训无优先级重要任务得不到确定性响应:伪并行,提高利用率. 在keilv4.74最后一个版本之后,KIELV5将KEIL-RTX该为CM ...
- 简单ui
UI继承 jQuery 简易使用特性,提供高度抽象接口,短期改善网站易用性. jquery UI 是一个建立在 jQuery JavaScript 库上的小部件和交互库,您可以使用它创建高度交互的 W ...
- JAVA代码之斗地主发牌
理解很好理解,关键是思路 按照斗地主的规则,完成洗牌发牌的动作: 具体规则: 1. 组装54张扑克牌 2. 将54张牌顺序打乱 3. 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌. ...
- Redis key 键
1.set key value //设置.修改值 2.get key //如果key不存在,返回nil,表示空. 3.type key //返回key对应的value的数据类型 4.ren ...