(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>(); }

最新文章

  1. shell 脚本文件Windows传到Linux后编码问题
  2. PostgreSQL trigger (function) examples
  3. Yslow&amp;PageSpeed– 诊断各种缓慢症状
  4. Request.ServerVariables 服务器环境变量
  5. ProxyCreationEnabled 和 LazyLoadingEnabled 的关系
  6. 【Python之路】第七篇--Python基础之面向对象及相关
  7. Java几种常见的设计模式
  8. 20175310 《Java程序设计》第9周学习总结
  9. 根据图片URL获取图片的尺寸【Swift语言实现】
  10. Lodop打印设计矩形重合预览线条变粗
  11. 在UnrealEngine中用Custom节点实现马赛克效果
  12. 电力电子MATLAB
  13. iOS-发送短信验证码倒计时
  14. C#枚举中使用Flags特性
  15. php中判断mysql查询返回结果集是否为空
  16. 实验吧CTF天网管理系统
  17. 自适应XAML布局经验总结 (二) 局部布局设计模式1
  18. Access 2010 应用基础 单元三:SQL查询
  19. stl空间配置器简介
  20. poj2513(无向图判欧拉路)

热门文章

  1. php UTF8 转字节数组,后使用 MD5 计算摘要
  2. 51nod1101(dp)
  3. 洛谷P2280 [HNOI2003]激光炸弹
  4. uoj#340. 【清华集训2017】小 Y 和恐怖的奴隶主(矩阵加速)
  5. IT兄弟连 JavaWeb教程 jQuery对AJAX的支持
  6. NSPhotoLibraryAddUsageDescription解决办法
  7. CC36:平分的直线
  8. vim如何删除行首、行位空格、空格行
  9. C# 字符串string
  10. Python面向对象之单例模式