VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > c#教程 >
  • C#教程之C# RestSharp 使用

本站最新发布   C#从入门到精通
试听地址  
https://www.xin3721.com/eschool/CSharpxin3721/

1.什么是RestSharp

RestSharp是一个轻量的,不依赖任何第三方的组件或者类库的Http的组件。它具有以下优点:

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

支持异步操作

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

2. 如何使用nuget添加restsharp到工程:

3.项目中使用举例:

首先定义一个GetClient 方法:

//使用方法之前获得cookie并放入RestClient对象
public static RestClient GetClient(List<Cookie> cookies)
{
		      //RestClient传递的string型的url
      var client = new RestClient(TestConfigurations.Domain.AppendPathSegments("app"));
      client.CookieContainer = new System.Net.CookieContainer();
      cookies.ForEach(c => client.CookieContainer.Add(new System.Net.Cookie(c.Name, c.Value, c.Path, c.Domain)));
      return client;
}
//封装了一个方法来给restClient调用
public static IRestResponse SendRequest(this RestClient client, Uri requestUrl, Method method, Dictionary<string, string> parameters = null)
{
      var request = client.FirmRequest(method);
      client.BaseUrl = requestUrl;
      if (parameters != null)
      {
           foreach (var p in parameters)
           {
               request.AddParameter(p.Key, p.Value);
           }
      }
	      //调用Execute方法来执行request
      return client.Execute(request);
}

如果出现网络错误, RestResponse.ResponseStatus 会设置 ResponseStatus.Error, 反之则是ResponseStatus.Completed.

如果需要访问 HTTP status code, 可以在 RestResponse.StatusCode 中找到。

//封装了一个方法来生成request对象,并且赋予header的必要信息以及传递get/post方式
public static RestRequest FirmRequest(this RestClient client, Method method)
{
      var request = new RestRequest();
      request.Method = method;
      request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
      request.AddHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
      return request;
}

下面是调用方法的例子:

//把cookies传入client
var client = HttpClientUtils.GetClient(Cookies);
//生成需要使用的参数,add到request内

var parameters = GetPage<AddUserPage>().EditUserForm.GetSubmitParameters();
parameters["BillableHourTarget"] = target;
//调用方法
client.SendRequest(new Uri(I.GetUrl()), Method.POST, parameters);

也可以使用反序列化,生成JObject(把一个json对象反序列化为.net object

var jresult = (JObject)JsonConvert.DeserializeObject(result.Content);
					if (jresult["Success"].ToString().ToLower() == "true")
   //do something here

4.RestSharp反序列化

application/json - JsonDeserializer

application/xml - XmlDeserializer

text/json - JsonDeserializer

text/xml - XmlDeserializer

5. 其他用法:

从IRestResponse中获取内容:

var client = HttpClientUtils.GetClient(cookies);
result = client.SendRequest(new Uri(url), RestSharp.Method.GET).Content;  

使用JsonConvert反序列化

var jtokenBudget = (JToken)JsonConvert.DeserializeObject(client.SendRequest(calendarUrl, g

相关教程