前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RestSharp_restbed

RestSharp_restbed

作者头像
全栈程序员站长
发布2022-10-04 22:00:51
5970
发布2022-10-04 22:00:51
举报

大家好,又见面了,我是你们的朋友全栈君。

RestSharp介绍

RestSharp是一个.NET平台下REST和HTTP API的开源客户端库,支持的平台包括

.NET 3.5/4、Mono、Mono for Android、MonoTouch、Windows Phone 7.1 Mango、Windows Phone 8.1。RestSharp可以简化用户访问Restful的服务过程,在这里下载代码可以让用户更简单的使用RestSharp。RestSharp使用Json.Net处理Json数据同Poco对象的序列化。另外,RestSharp还具有较好的封装性和简化性能。RestSharp的优点:

  • 支持 .NET 3.5+,Silverlight 4, Windows Phone 7, Mono, MonoTouch, Mono for Android, Compact Framework 3.5等
  • 通过NuGet方便引入到任何项目
  • 可以自动反序列化XML和JSON
  • 支持自定义的序列化与反序列化
  • 自动检测返回的内容类型
  • 支持HTTP的GET, POST, PUT, HEAD, OPTIONS, DELETE等操作
  • 可以上传多文件
  • 支持oAuth 1, oAuth 2, Basic, NTLM and Parameter-based Authenticators等授权验证等
  • 支持异步操作
  • 极易上手并应用到任何项目中

链接

代码语言:javascript
复制
- 项目主页: http://restsharp.org
- 下载地址: http://github.com/johnsheehan/RestSharp/downloads
- 项目托管地址:
    - GitRepository: git://github.com/restsharp/RestSharp.git
    - Github项目地址: https://github.com/restsharp/RestSharp
    - Nuget:[https://www.nuget.org/packages/RestSharp](https://www.nuget.org/packages/RestSharp)
- Wiki:[https://github.com/restsharp/RestSharp/wiki](https://github.com/restsharp/RestSharp/wiki)
- stackoverflow:[http://stackoverflow.com/questions/tagged/RestSharp](http://stackoverflow.com/questions/tagged/RestSharp)
- 其他:http://www.cnblogs.com/shanyou/archive/2012/01/27/RestSharp.html

RestSharp帮助类

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Net;
using Newtonsoft.Json;
using RestSharp;
namespace Project.Helper
{
public static class RestHelper
{
/// <summary>
/// params 
/// </summary>
static RestClient _restClient;
static RestHelper()
{
_restClient = new RestClient {Timeout = 5000};
}
/// <summary>
/// 基地址
/// </summary>
public static Uri BaseUrl
{
set { _restClient.BaseUrl = value; }
}
/// <summary>
/// GET
/// </summary>
/// <param name="resource">资源</param>
/// <returns>IRestResponse</returns>
public static IRestResponse Get(string resource)
{
try
{
var request = new RestRequest(resource, Method.GET);
IRestResponse response = _restClient.Execute(request);
return response;
}
catch (Exception ex)
{
Log.RecordEx(ex);
return null;
}
}
/// <summary>
/// GET
/// 一般返回string或Enum
/// </summary>
/// <param name="resource">资源</param>
/// <param name="obj">返回对象</param>
/// <returns>true/false</returns>
public static bool Get(string resource, out object obj)
{
try
{
IRestResponse response = Get(resource);
if (response.StatusCode == HttpStatusCode.OK)
{
obj = JsonConvert.DeserializeObject(response.Content);
return true;
}
else
{
obj = null;
return false;
}
}
catch (Exception ex)
{
Log.RecordEx(ex);
obj = null;
return false;
}
}
/// <summary>
/// GET返回T类型对象
/// </summary>
/// <typeparam name="T">存在无参构造函数</typeparam>
/// <param name="resource">资源</param>
/// <returns>T</returns>
public static T Get<T>(string resource) where T : new()
{
try
{
var request = new RestRequest(resource, Method.GET);
IRestResponse<T> response = _restClient.Execute<T>(request);
if (response.StatusCode != HttpStatusCode.OK)
return default(T);
if (response.Data != null)
return response.Data;
return JsonConvert.DeserializeObject<T>(response.Content);
}
catch (Exception ex)
{
Log.RecordEx(ex);
return default(T);
}
}
/// <summary>
/// GET返回T类型对象
/// </summary>
/// <typeparam name="T">存在无参构造函数</typeparam>
/// <param name="resource">资源</param>
/// <param name="isData">是否使用IRestResponse<T>.Data</param>
/// <returns>T</returns>
public static T Get<T>(string resource,bool isData) where T : new()
{
try
{
var request = new RestRequest(resource, Method.GET);
IRestResponse<T> response = _restClient.Execute<T>(request);
if (response.StatusCode != HttpStatusCode.OK)
return default(T);
if(isData)
{
if (response.Data != null)
return response.Data;
}
return JsonConvert.DeserializeObject<T>(response.Content);
}
catch (Exception ex)
{
Log.RecordEx(ex);
return default(T);
}
}
/// <summary>
/// GET返回T类型对象
/// </summary>
/// <typeparam name="T">存在无参构造函数的类型</typeparam>
/// <param name="resource">资源</param>
/// <param name="parameters">参数列表</param>
/// <returns>T</returns>
public static T Get<T>(string resource, List<Parameter> parameters) where T : new()
{
try
{
var request = new RestRequest(resource, Method.GET);
foreach (var param in parameters)
{
request.AddParameter(param);
}
IRestResponse<T> response = _restClient.Execute<T>(request);
if (response.Data != null)
return response.Data;
return JsonConvert.DeserializeObject<T>(response.Content);
}
catch (Exception ex)
{
Log.RecordEx(ex);
return default(T);
}
}
/// <summary>
/// GET返回T类型对象
/// </summary>
/// <typeparam name="T">存在无参构造函数的类型</typeparam>
/// <param name="resource">资源</param>
/// <param name="queryParam">参数列表</param>
/// <param name="isData">是否使用response.Data</param>
/// <returns>T</returns>
public static T Get<T>(string resource, Dictionary<string,string> queryParam,bool isData=false) where T : new()
{
try
{
var request = new RestRequest(resource, Method.GET);
foreach (var param in queryParam)
{
request.AddQueryParameter(param.Key, param.Value);
}
var response = _restClient.Execute<T>(request);
if (isData)
return response.Data;
return JsonConvert.DeserializeObject<T>(response.Content);
}
catch (Exception ex)
{
Log.RecordEx(ex);
return default(T);
}
}
/// <summary>
/// POST
/// </summary>
/// <param name="resource">resource</param>
/// <param name="obj">body参数</param>
/// <returns>HttpStatusCode</returns>
public static HttpStatusCode Post(string resource, object obj)
{
try
{
var request = new RestRequest(resource, Method.POST) { RequestFormat = DataFormat.Json };
request.AddHeader("Content-Type", "application/json"); //设置HTTP头
request.AddBody(obj);//account实体类的一个对象
return _restClient.Execute(request).StatusCode;
}
catch (Exception ex)
{
Log.RecordEx(ex);
return 0;
}
}
/// <summary>
/// POST
/// </summary>
/// <param name="resource"></param>
/// <param name="values"></param>
/// <param name="silence"></param>
/// <returns></returns>
public static HttpStatusCode Post(string resource, Dictionary<string, object> values)
{
try
{
IRestRequest request = new RestRequest(resource, Method.POST);
foreach (var each in values)
{
request.AddParameter(each.Key, each.Value);
}
IRestResponse response = _restClient.Execute(request);
return response.StatusCode;
}
catch (Exception ex)
{
Log.RecordEx(ex);
return 0;
}
}
/// <summary>
/// PUT
/// 测试通过
/// </summary>
/// <param name="resource">资源</param>
/// <param name="obj">Body</param>
/// <returns>HttpStatusCode</returns>
public static HttpStatusCode Put(string resource,object obj)
{
try
{
var request = new RestRequest(resource, Method.PUT) { RequestFormat = DataFormat.Json };
request.AddHeader("Content-Type", "application/json"); //设置HTTP头
request.AddBody(obj);
IRestResponse response = _restClient.Execute(request);
HttpStatusCode result = response.StatusCode;
return result;
}
catch (Exception ex)
{
Log.RecordEx(ex);
return 0;
}
}
/// <summary>
/// DELETE
/// </summary>
/// <param name="resource">资源</param>
/// <param name="obj">参数</param>
/// <returns></returns>
public static HttpStatusCode Delete(string resource,object obj)
{
try
{
var request = new RestRequest(resource, Method.DELETE) { RequestFormat = DataFormat.Json };
request.AddHeader("Content-Type", "application/json"); //设置HTTP头
request.AddBody(obj);//account实体类的一个对象
IRestResponse response = _restClient.Execute(request);
HttpStatusCode result = response.StatusCode;
return result;
}
catch (Exception ex)
{
Log.RecordEx(ex);
return 0;
}
}
public static HttpStatusCode Delete(string resource)
{
try
{
var request = new RestRequest(resource, Method.DELETE) { RequestFormat = DataFormat.Json };
request.AddHeader("Content-Type", "application/json"); //设置HTTP头
IRestResponse response = _restClient.Execute(request);
HttpStatusCode result = response.StatusCode;
return result;
}
catch (Exception ex)
{
Log.RecordEx(ex);
return 0;
}
}
/// <summary>
/// PUT
/// 测试通过
/// </summary>
/// <param name="resource"></param>
/// <param name="values"></param>
/// <param name="silence"></param>
/// <returns></returns>
public static bool Put(string resource, Dictionary<string, object> values, bool silence = false)
{
try
{
IRestRequest request = new RestRequest(resource, Method.PUT);
foreach (var each in values)
{
request.AddParameter(each.Key, each.Value);
}
IRestResponse response = _restClient.Execute(request);
if (response.StatusCode == HttpStatusCode.OK)
{
return true;
}
return false;
}
catch (Exception ex)
{
Log.RecordEx(ex);
return false;
}
}
/// <summary>
/// 上传文件
/// </summary>
/// <param name="resource">资源</param>
/// <param name="path">文件路径</param>
/// <returns>成功:true/失败:false</returns>
public static bool Put(string resource, string path)
{
try
{
var request = new RestRequest(resource, Method.PUT) { RequestFormat = DataFormat.Json };
request.AddHeader("Content-Disposition", "form-data");
request.AddFile("file", path);
IRestResponse response = _restClient.Execute(request);
return response.StatusCode == HttpStatusCode.OK;
}
catch (Exception ex)
{
Log.RecordEx(ex);
return false;
}
}
}
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/195941.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022年9月8日 下,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • RestSharp介绍
  • 链接
  • RestSharp帮助类
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档