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数据,分如下几步: > 将 ...
随机推荐
- 51nod1412(dp)
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1412 代码: #include <bits/stdc+ ...
- To the max(求最大子矩阵和)
To the Max Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 47985 Accepted: 25387 Desc ...
- 剑指Offer的学习笔记(C#篇)-- 栈的压入、弹出序列
题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压 ...
- Node.js的安装与使用-Windows系统
首先到官网下载node.js http://nodejs.cn 下载完成后一直下一步Next即可安装完成,路径可以自己设置 然后配置环境变量,将node安装的目录配置到Path中 例如: cmd打开命 ...
- CC36:平分的直线
题目 在二维平面上,有两个正方形,请找出一条直线,能够将这两个正方形对半分.假定正方形的上下两条边与x轴平行. 给定两个vecotrA和B,分别为两个正方形的四个顶点.请返回一个vector,代表所求 ...
- Codeforces 185B(数学结论)
要点 有不等式\(x^ay^bz^c=a^ab^bc^c(\frac{x}{a})^a(\frac{y}{b})^b(\frac{z}{c})^c<=a^ab^bc^c(\frac{x+y+z} ...
- X Samara Regional Intercollegiate Programming Contest DIV2
http://codeforces.com/gym/101341 其实我觉得这份题很不错的,虽然是div2,但是感觉对我挺有帮助(我比较垃圾0.0),还没补完(做的时候一直蒙逼,要补很多题)先写一点点 ...
- Jenkins+Gitlab+Ansible自动化部署(三)
接Jenkins+Gitlab+Ansible自动化部署(一)https://www.cnblogs.com/zd520pyx1314/p/10210727.html 和(二)https://www. ...
- DatabaseMetaData类
DatabaseMetaData类是java.sql包中的类,利用它可以获取我们连接到的数据库的结构.存储等很多信息.如: 1.数据库与用户,数据库标识符以及函数与存储过程. 2.数据 ...
- jQuery知识点小结
博主之前学习一段时间后做了点Demo,借此机会发出来分享,其实学jQuery只要简单看看文档即可,但有些细枝末节的东西文档会默认使用者是了解的,所以还是得系统学习系统训练:Talk is cheap, ...