示例:
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. js运算符单竖杠“|”的作用

    在js整数操作的时候,相当于去除小数点,parseInt.在正数的时候相当于Math.floor(),负数的时候相当于Math.ceil() 注: 1. Math.ceil()用作向上取整. 2. M ...

  2. php扩展SeasLog应用于 yii2 组件

    一.seaslog 简单介绍及使用原因 它是C 写的PHP扩展,性能很高,使用简单,能满足大部分简单的日志需求.(个人感觉) 其他优势请看-->https://github.com/Neeke/ ...

  3. JS与浏览器的几个兼容性问题

    第一个:有的浏览器不支持getElementsByClassName(),所以需要写一个function()来得到需要标签的class,然后进行class的增加.删除等操作. 第二个:在需要得到特定标 ...

  4. 开源OSS.Social微信项目解析

    ​前言:OSS.Social是个开源的社交网站接口集成项目,当前也有很多其他不错的项目,不过始终没有我想要的那种简单清晰,只能撸起袖子,从头打造一个.当前正在进行的是对微信项目的开发,这里把对接口的整 ...

  5. Accessibility辅助功能--一念天堂,一念地狱

    0x00什么是Accessibility(辅助功能) 考虑到部分用户不能很好地使用Android设备,比如由于视力.身体.年龄方面的限制,造成阅读内容.触控操作.声音信息等方面的获取困难,Androi ...

  6. java_XML_JAXB

    JAXB 可以实现Java对象与XML的相互转换,在JAXB中,将一个Java对象转换为XML的过程称之为Marshal,将XML转换为Java对象的过程称之为UnMarshal. 下面使用的是JDK ...

  7. TPS及计算方法

    个事务,TPS为6 / 60s = 0.10 TPS.同时我们会知道事务的响应时间(或节拍),以此例,60秒完成6个事务也同时代表每个事务的响应时间或节拍为10秒.   利特尔法则  (Little' ...

  8. Linux系统(三)系统基础扫盲大全

    序言 如果大家都爱装逼,一般会偏爱使用安装最小化的liunx系统,那么你的系统就不带图形化的桌面功能,这样对于一个想装B的初学者来说,Liunx就是黑漆马虎,一望无际的黑屏,黑屏,如何快速的对liun ...

  9. 【读书笔记】-- JavaScript模块

    在JavaScript编程中我们用的很多的一个场景就是写模块.可以看成一个简单的封装或者是一个类库的开始,有哪些形式呢,先来一个简单的模块. 简单模块 var foo = (function() { ...

  10. MongoDB学习总结(四) —— 索引的基本用法

    说到索引,大家肯定都在关系型数据库或多或少接触过,它的主要目的是加速查询的速度.MongoDB作为一种数据库,当然也提供了索引的操作. 我们先插入1万条测试数据. 首先,我们先来看看不加索引查找nam ...