RestSharp_restbed

RestSharp_restbedRestSharp介绍RestSharp是一个.NET平台下REST和HTTPAPI的开源客户端库,支持的平台包括.NET3.5/4、Mono、MonoforAndroid、MonoTouch、WindowsPhone7.1Mango、WindowsPhone8.1。RestSharp可以简化用户访问Restful的服务过程,在这里下载代码可以让用户更简单的使用RestSha…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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等授权验证等

  • 支持异步操作

  • 极易上手并应用到任何项目中

链接

- 项目主页: 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帮助类

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.net/195941.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 免裁券也不灵?老板:想不到我裁你两次吧……

    免裁券也不灵?老板:想不到我裁你两次吧……

    2022年2月14日
    42
  • softmax、softmax损失函数、cross-entropy损失函数[通俗易懂]

    softmax、softmax损失函数、cross-entropy损失函数[通俗易懂]softmaxsoftmax,顾名思义,就是soft版本的max。在了解softmax之前,先看看什么是hardmax。hardmax就是直接选出一个最大值,例如[1,2,3]的hardmax就是3,而且只选出最大值,非黑即白,但是实际中这种方式往往是不合理的,例如对于文本分类来说,一篇文章或多或少包含着各种主题信息,我们更期望得到文章属于各种主题的概率值,而不是简单直接地归类为某一种唯一的主题。这里就需要用到soft的概念,即不再唯一地确定某一个最大值,而是为每个输出分类

    2022年6月26日
    33
  • vue关于页面刷新的几个方式[通俗易懂]

    vue关于页面刷新的几个方式[通俗易懂]在写项目的时候会遇到需要刷新页面重新获取数据,浅浅总结了一下几种方案。1.this.$router.go(0)强制刷新页面,会出现一瞬间的白屏,用户体验感不好。2.location.reload()也是强制刷新页面,和第一种方法一样,会造成一瞬间的白屏,用户体验感不好。3.跳转空白页再跳回原页面在需要页面刷新的地方写上:this.$router.push(’/emptyPage’),跳转到一个空白页。在emptyPage.vue里beforeRouteEnter钩子里控制页面跳转,从而达到刷新

    2022年10月16日
    2
  • swagger常用注解[通俗易懂]

    一、swagger常用注解1、与模型相关的注解两个注解:@ApiModel:用在模型类上,对模型类做注释;@ApiModelProperty:用在属性上,对属性做注释2、与接口相关的注解六个注解:@Api:用在controller上,对controller进行注释;@ApiOperation:用在API方法上,对该API做注释,说明API的作用;

    2022年4月14日
    54
  • 数据结构 图的邻接矩阵

    数据结构 图的邻接矩阵图的邻接矩阵的存储方式是用两个数组来实现的,一个一维数组存储顶点信息,一个二维数组存储线(无向图)或弧(有向图)的信息。设图G有n个顶点,则邻接矩阵是一个n×n的方阵,定义为:无向图的邻接矩阵,两个顶点有边则为1,否则,为0;因为是无向图arc[i][j]=arc[j][i],所以矩阵为对称矩阵,对角线为自己到自己的边,邻接矩阵中,行之和或者列之和都为各顶点度的总数。设图G有是网图,有n个…

    2022年6月28日
    22
  • snmp协议端口号_SNMP OID

    snmp协议端口号_SNMP OID记一次日常工作1、SNMP是一个简单的网络管理协议,起初我也不知道啥玩意,在自己做安全设备配置日志审计服务器时突然发现的,某厂商设备不支持syslog服务器配置,只有snmp的配置,我当即填上相关信息如下图可见,将状态整为开启,版本自己选择的v2,因为顾虑v1版本可能存在一些缺陷,填好IP、端口、间隔发送时间、还有一个community选项是对应我们的server端的名称。2、原本以为简单的就完事了,我就进行下一步取server端搞一搞,三下五除二的就把server端的基本信息配置好,下图仅为snmp

    2022年8月20日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号