示例:
var client = new RestClient("http://example.com");
// client.Authenticator = new HttpBasicAuthenticator(username, password);

var request = new RestRequest("resource/{id}", Method.POST);
request.AddParameter("name", "value"); // adds to POST or URL querystring based on Method
request.AddUrlSegment("id", "123"); // replaces matching token in request.Resource

// easily add HTTP Headers
request.AddHeader("header", "value");

// add files to upload (works with compatible verbs)
request.AddFile(path);

// execute the request
IRestResponse response = client.Execute(request);
var content = response.Content; // raw content as string

// or automatically deserialize result
// return content type is sniffed but can be explicitly set via RestClient.AddHandler();
RestResponse<Person> response2 = client.Execute<Person>(request);
var name = response2.Data.Name;

// easy async support
client.ExecuteAsync(request, response => {
    Console.WriteLine(response.Content);
});

// async with deserialization
var asyncHandle = client.ExecuteAsync<Person>(request, response => {
    Console.WriteLine(response.Data.Name);
});

// abort the request on demand

asyncHandle.Abort();
1.使用
(1)通过github下载 : https://github.com/restsharp/RestSharp
 

( 2 )通过NuGet把RestSharp引入项目中

通过RestSharp的相关接口,快速调用RESTful API

以调用DaoCloud的API为例

1
2
3
4
5
6
7
8
9
10
11
12
            //      <add key="DaoCloudAPI_BASE_URL" value="https://openapi.daocloud.io/"/>
// <add key="DaoCloudAPI_GETAPP_URL" value="v1/apps"/>
 
string getAppUrl = ConfigurationManager.AppSettings["DaoCloudAPI_GETAPP_URL"];
//构建客户端对象
RestClient client = new RestClient(Base_url);
//构建请求,getAppUrl请求地址
RestRequest request = new RestRequest(getAppUrl, Method.GET);
//设置请求头部参数
request.AddHeader("Authorization", API_Token);
//获取返回值
var _result = client.Execute(request);

以上代码运行结果:

以上是使用同步方式调用,由于网络通信的不稳定性,建议使用异步方式进行调用:

1
2
3
4
            client.ExecuteAsync(request,response =>
{
Console.WriteLine(response.Content);
});

对于RESTful的返回值json数据,在RestSharp中已经有相关的反序列化实现,当然首先得有json对应的C#实体类,通过在线的一些网站可以很快获得这个类:

http://www.jsons.cn/jsontomodel/

通过以上网站,转换得到C#实体类代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
public class Package
{
/// <summary>
///
/// </summary>
public string image { get; set; }
 
/// <summary>
///
/// </summary>
public string id { get; set; }
 
}
 
 
 
public class App_runtime
{
/// <summary>
/// 云端测试环境
/// </summary>
public string display_name { get; set; }
 
/// <summary>
///
/// </summary>
public string id { get; set; }
 
/// <summary>
///
/// </summary>
public string name { get; set; }
 
}
 
 
 
public class AppItem
{
/// <summary>
///
/// </summary>
public string enable_auto_redeploy { get; set; }
...

有了这些自动生成的JSON对应的实体类就可以使用RestSharp把返回的数据直接转换成对象了,使用如下方法即可:

1
2
3
4
5
6
7
            //同步获取返回值
var _result = client.Execute<Model.DaoCloud.Root>(request);
//异步获取
client.ExecuteAsync<Model.DaoCloud.Root>(request, response =>
{
Console.WriteLine(response.Content);
});
RestSharp还是十分好用的,做一个小东西刚好用到,就记下来,免得以后忘了。

.NET的HTTP辅助类:RestSharp的更多相关文章

  1. RestSharp 一个.NET(C#)的HTTP辅助类组件

    互联网上关于.NET(C#)的HTTP相关的辅助类还是比较多的,这里再为大家推荐一个.NET的HTTP辅助类,它叫RestSharp.RestSharp是一个轻量的,不依赖任何第三方的组件或者类库的H ...

  2. 推荐一个.NET(C#)的HTTP辅助类组件--restsharp

    互联网上关于.NET(C#)的HTTP相关的辅助类还是比较多的,这里再为大家推荐一个.NET的HTTP辅助类,它叫RestSharp.RestSharp是一个轻量的,不依赖任何第三方的组件或者类库的H ...

  3. Restful&RestSharp

    RestSharp 一个.NET(C#)的HTTP辅助类组件 https://www.cnblogs.com/lilunjia/p/7090015.html C#使用RestSharp实现post发送 ...

  4. Java的几个同步辅助类

    Java为我们提供了一些同步辅助类,利用这些辅助类我们可以在多线程编程中,灵活地把握线程的状态. CountDownLatch CountDownLatch一个同步辅助类,在完成一组正在其他线程中执行 ...

  5. ASP.NET Core 中文文档 第四章 MVC(3.6.2 )自定义标签辅助类(Tag Helpers)

    原文:Authoring Tag Helpers 作者:Rick Anderson 翻译:张海龙(jiechen) 校对:许登洋(Seay) 示例代码查看与下载 从 Tag Helper 讲起 本篇教 ...

  6. DateHelper.cs日期时间操作辅助类C#

    //==================================================================== //** Copyright © classbao.com ...

  7. 同步辅助类CountDownLatch用法

    CountDownLatch是一个同步辅助类,犹如倒计时计数器,创建对象时通过构造方法设置初始值,调用CountDownLatch对象的await()方法则使当前线程处于等待状态,调用countDow ...

  8. 基于MemoryCache的缓存辅助类

    背景: 1. 什么是MemoryCache? memoryCache就是用电脑内存做缓存处理 2.使用范围? 可用于不常变的数据,进行保存在内存中,提高处理效率 代码: /// <summary ...

  9. java中被各种XXUtil/XXUtils辅助类恶心到了,推荐这种命名方法

    且看一下有多少个StringUtils 列举一下XXUtil/XXUtils恶劣之处 1. 不知道该用XXUtil还是用XXUtils, 或者XXHelper, XXTool 2. 不知道该用a.ja ...

随机推荐

  1. lo dash api

    https://lodash.com/docs 用 Lo-Dash 替换 underscore http://segmentfault.com/a/1190000000359484

  2. html标签大全(2)

    http标签详解 声明 1:这里的文字都是我从我自己csdn账号拷贝过来,是本人学习总结的结晶,所以请尊重本作品.2:如要要转载本文章,则要说明文字的出处.3:如有哪里不对欢迎指出. 在上一篇文章中主 ...

  3. DotNet加密方式解析--数字签名

    马上就要过年回村里了,村里没有wifi,没有4G,没有流量,更加重要的是过几天电脑就得卖掉换车票了,得赶紧写几篇博客. 数据安全的相关技术在现在愈来愈变得重要,因为人们对于自身的信息都有一种保护的欲望 ...

  4. python中关于局部变量与全局变量的认识

    1.函数内部的变量名如果第一次出现,且出现在=前面,即被视为定义一个局部变量,不管全局域中有没有用到该变量名,函数中使用的将是局部变量,例如: num = 100 def func(): num = ...

  5. KB奇遇记(3):IT现状

    2015年8月3号,终于告别了过去来到了KB. 公司给安排的住房是一间套房里的小房间,小的简直连坐的地方都没有了,中间一个大床将房间隔了两边,显得特别狭小.由于是刚来,我也不好要求太多.但就这个小房间 ...

  6. 理解Window和WindowManager

    Window表示一个窗口的概念,Window是一个抽象类,它的具体实现是PhoneWindow.创建一个Window,需要通过WindowManager即可完成,WindowManager是外界访问W ...

  7. Tooltip浮动提示框效果(掌握里面的小知识)

    使用原生JavaScript设计和实现Tooltip浮动提示框特效,了解代码简化.事件绑定.事件冒泡等技巧和知识. 特效四个关键点:显示:鼠标移到ToolTip超链接上时,ToolTip提示框可以显示 ...

  8. 都能读懂的css3 3D变形效果

    css3 3D变形效果 CSS3 transform3D变形 transform的含义是:改变,使-变形:转换 三维变换使用基于二维变换的相同属性,如果您熟悉二维变换,你们发现3D变形的功能和2D变换 ...

  9. JS Proptotyp以及__proto__

    一直以来都特别疑惑js原型链的只是,每次看到类似的文章也是迷迷糊糊,今天终于有点小的感悟,记录下来 在JS中一切都是对象,而通过其它的面向对象语言,对象又是类型的实例,所以类型和对象是不同的,那么在j ...

  10. maven 配置安装

    1.下载maven http://maven.apache.org/   2.windows安装maven 解压包后配置环境变量 PATH:%M2_HOME%\bin M2_HOME:D:\soft\ ...