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