精华内容
下载资源
问答
  • restsharp反序列化
    2018-12-22 14:27:00

    C# API接收到数据后,反序列化后直接返回null,而不会给出错误提示,所以不好排查错误。

    通过在api中直接进行反序列化,能够得到错误明细:

    没有报错的时候,request会直接为null,不会报错。

     public Response ChangedData([FromBody]Request<AutoProcessDataParameter> request)
            {
                //添加该读取语句,直接反序列化,能够抛出exception
                var content = Request.Content.ReadAsStringAsync().Result;
                var response = new Response()
                {
                    Header = new ResponseHeader()
                    {
                        Version = request.Header.Version,
                        IsSuccess = true,
                        Errors = new List<ResponseError>()
                    }
                };

     

    转载于:https://www.cnblogs.com/tylertang/p/10160981.html

    更多相关内容
  • RestSharp反序列化 使用 RESTSharp 进行 JSON 反序列化的示例。 它演示了使用 RestSharp 将 JSON 字符串转换为使用反序列化的类对象。
  • 自己在 unity5.3.4f1 使用的序列化插件,Android 和 ios端完美运行。
  • 使用下面的RestSharp JsonDeserializer反序列化JS对象。 给定库限制(如所述),该过程分为两个阶段。 首先是使用JsonArray将外部Entries列表反序列化为临时表示形式。 此后,将对该数组中的各个条目进行单独的重新...
  • RestSharp可能是.NET中最受欢迎的HTTP客户端库,具有自动序列化和反序列化,请求和响应类型检测,各种身份验证以及其他有用的功能,正在被成千上万的项目使用。 序列化 - 支持JSON,XML和自定义序列化和反序列化 ...
  • RestSharp.106.12.0.zip

    2021-10-11 22:14:41
    RestSharp可能是.NET中最受欢迎的HTTP客户端库,具有自动序列化和反序列化,请求和响应类型检测,各种身份验证以及其他有用的功能,正在被成千上万的项目使用。 github下载地址:...
  • RestSharp 可能是最流行的 .NET HTTP 客户端库。 它具有自动序列化和反序列化、请求和响应... RestSharp 可以负责将请求正文序列化为 JSON 或 XML 并反序列化响应。 它还可以根据不同的参数类型形成有效的请求 URI。
  • RestSharp-106.13.0_dll.rar

    2021-11-21 11:27:27
    最新版RestSharp-106.13.0.dll。RestSharp是一款非常...RestSharp可能是.NET中最受欢迎的HTTP客户端库,具有自动序列化和反序列化,请求和响应类型检测,各种身份验证以及其他有用的功能,正在被成千上万的项目使用。
  • (1) 在反序列化前要设置RootElement,否则无法反序列化成功。 (2) 反序列化后的对象属性如果有数组成员变量,必须用List<string>,而不能用string[],否则会提示没有定义无参数的构造函数。 以下例子用于反序列...

    RestSharp中的json反序列化类为JsonDeserializer,其用法与JSON.NET有点不同。

    (1) 在反序列化前要设置RootElement,否则无法反序列化成功。

    (2) 反序列化后的对象属性如果有数组成员变量,必须用List<string>,而不能用string[],否则会提示没有定义无参数的构造函数。

     

    以下例子用于反序列化一个json字符串。

    JSON字符串为:{"error":{"code":400,"message":"Unable to complete  operation.","details":["Invalid URL"]}}

     

    .NET代码如下:

     

    Public class JsonDemo

    {

    public void Test()

    {

    var myresponse = new RestResponse();
    myresponse.Content = "{\"error\":{\"code\":400,\"message\":\"Unable to complete  operation.\",\"details\":[\"Invalid URL\"]}}";

           

    JsonDeserializer myJsonDeserializer = new JsonDeserializer();
    myJsonDeserializer.RootElement = "error";       

    List<errorObject> myErrors = myJsonDeserializer.Deserialize<List<errorObject>>(myresponse);

    }

    }

     

    public class errorObject
    {
        private int _code;
        public int code
        {
            get { return _code; }
            set { _code = value; }
        }

        private string _message;
        public string message
        {
            get { return _message; }
            set { _message = value; }
        }

        private List<string> _details;
        public List<string> details
        {
            get { return _details; }
            set { _details = value; }
        }

        public errorObject()
        { }

    }

    转载于:https://www.cnblogs.com/janehlp/archive/2012/11/07/2759012.html

    展开全文
  • RestSharp

    万次阅读 2019-05-10 20:38:28
    一、RestSharp简绍 RestSharp是一个轻量的,不依赖任何第三方的组件或者类库的Http的组件。RestSharp具体以下特性; 1、支持.NET 3.5+,Silverlight 4, Windows Phone 7, Mono, MonoTouch, Mono for Android, Compact...

    一、RestSharp简绍

    RestSharp是一个轻量的,不依赖任何第三方的组件或者类库的Http的组件。RestSharp具体以下特性;

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

    以上是RestSharp的主要特点,通用它你可以很容易地用程序来处理一系列的网络请求(GET, POST, PUT, HEAD, OPTIONS, DELETE),并得到返回结果

    下面是官方的应用示例,使用起来简单快捷:

    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
    
    // add parameters for all properties on an object
    request.AddObject(object);
    
    // or just whitelisted properties
    request.AddObject(object, "PersonId", "Name", ...);
    
    // easily add HTTP Headers
    request.AddHeader("header", "value");
    
    // add files to upload (works with compatible verbs)
    request.AddFile("file", 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();
    IRestResponse<Person> response2 = client.Execute<Person>(request);
    var name = response2.Data.Name;
    
    // or download and save file to disk
    client.DownloadData(request).SaveAs(path);
    
    // easy async support
    await client.ExecuteAsync(request);
    
    // async with deserialization
    var asyncHandle = client.ExecuteAsync<Person>(request, response => {
       Console.WriteLine(response.Data.Name);
    });
    
    // abort the request on demand
    asyncHandle.Abort();
    

    二、RestSharp应用实例

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using Newtonsoft.Json;
    using RestSharp;
    
    namespace RestFulClient
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.Title = "Restful客户端第三方RestSharpDemo测试";
                //方法二、使用第三方RestSharp
                var client = new RestSharp.RestClient("http://127.0.0.1:7788");
                var requestGet = new RestRequest("PersonInfoQuery/{name}", Method.GET);
                requestGet.AddUrlSegment("name", "王二麻子");
                IRestResponse response = client.Execute(requestGet);
                var contentGet = response.Content;
                Console.WriteLine("GET方式获取结果:" + contentGet);
    
                var requestPost = new RestRequest("PersonInfoQuery/Info", Method.POST);
                Info info = new Info();
                info.ID = 1;
                info.Name = "张三";
                var json = JsonConvert.SerializeObject(info);
                requestPost.AddParameter("application/json", json, ParameterType.RequestBody);
                IRestResponse responsePost = client.Execute(requestPost);
                var contentPost = responsePost.Content;
                Console.WriteLine("POST方式获取结果:" + contentPost);
                Console.Read();
            }
        }
    
        [Serializable]
        public class Info
        {
            public int ID { get; set; }
            public string Name { get; set; }
        }
    }
    
    展开全文
  • RestSharp使用说明

    千次阅读 2018-08-29 18:01:28
    一、新手入门 ...如果只有少量一次性请求需要封装为API,则可以如下使用RestSharp : using RestSharp; using RestSharp.Authenticators; var client = new RestClient(); client.BaseUrl = new Uri("...

    一、新手入门

    如果只有少量一次性请求需要封装为API,则可以如下使用RestSharp :

    using RestSharp;
    using RestSharp.Authenticators;
    
    var client = new RestClient();
    client.BaseUrl = new Uri("http://twitter.com");
    client.Authenticator = new HttpBasicAuthenticator("username", "password");
    
    var request = new RestRequest();
    request.Resource = "statuses/friends_timeline.xml";
    
    IRestResponse response = client.Execute(request);

    IRestResponse 接口中包含了所有远程服务返回的信息,可以访问头信息(header)数据内容(content)、HTTP状态等。建议使用泛型将返回结果自动反序列化为.NET实体类。

    关于错误处理:

    如果发生了网络传输错误(网络瘫痪,DNS查找失败等),RestResponse.ResponseStatus 将会置为Error ,否则RestResponse.ResponseStatus的值为Completed 。如果API返回404,ResponseStatus 仍然是Completed 。如果需要访问返回的HTTP状态码,则需要查看RestResponse.StatusCode 的值,Status  属性是请求完成的标识,独立于API错误处理。

    二、推荐用法

    RestSharp适合作为API代理类实现的基础,下面是 Twilio类库中的一些使用示例:

    创建一个包含API代理实现的类,声明一个执行方法当作所有请求的入口。这个执行方法允许设置常用参数和其它跨请求共享设置(例如认证),因为每一个请求都需要帐户ID和密钥,所以在建立新的代理实例时都需要传递这两个值。需要注意的是执行过程中不会抛出异常,但是可以在ErrorException 中访问到异常信息。

    // TwilioApi.cs
    public class TwilioApi {
        const string BaseUrl = "https://api.twilio.com/2008-08-01";
    
        readonly string _accountSid;
        readonly string _secretKey;
    
        public TwilioApi(string accountSid, string secretKey) {
            _accountSid = accountSid;
            _secretKey = secretKey;
        }
    
        public T Execute<T>(RestRequest request) where T : new()
        {
            var client = new RestClient();
            client.BaseUrl = new System.Uri(BaseUrl);
            client.Authenticator = new HttpBasicAuthenticator(_accountSid, _secretKey);
            request.AddParameter("AccountSid", _accountSid, ParameterType.UrlSegment); // used on every request
            var response = client.Execute<T>(request);
    
            if (response.ErrorException != null)
            {
                const string message = "Error retrieving response.  Check inner details for more info.";
                var twilioException = new ApplicationException(message, response.ErrorException);
                throw twilioException;
            }
            return response.Data;
        }
    
    }

    接下来,定义一个实体类来映射API返回的数据,再定义一个方法用来访问API同时获取返回的Call资源的具体信息:

    // Call.cs
    public class Call
    {
        public string Sid { get; set; }
        public DateTime DateCreated { get; set; }
        public DateTime DateUpdated { get; set; }
        public string CallSegmentSid { get; set; }
        public string AccountSid { get; set; }
        public string Called { get; set; }
        public string Caller { get; set; }
        public string PhoneNumberSid { get; set; }
        public int Status { get; set; }
        public DateTime StartTime { get; set; }
        public DateTime EndTime { get; set; }
        public int Duration { get; set; }
        public decimal Price { get; set; }
        public int Flags { get; set; }
    }
    
    // TwilioApi.cs, method of TwilioApi class
    public Call GetCall(string callSid) 
    {
        var request = new RestRequest();
        request.Resource = "Accounts/{AccountSid}/Calls/{CallSid}";
        request.RootElement = "Call";
    
        request.AddParameter("CallSid", callSid, ParameterType.UrlSegment);
    
        return Execute<Call>(request);
    }

    有一些神奇之处是RestSharp 需要关心而我们不必关注:

    1、API返回的XML数据被默认XmlDeserializer 检测到,同时反序列化为Call对象。

    2、默认RestRequest 对应HTTP中的GET 请求,可以通过设置RestRequest  的Method属性或者在创建请求实例时通过构造函数指定Method  类型来改变请求类型。

    3、UrlSegment  类型参数会根据Resource 属性值中匹配的名称标签将值注入到URL中,AccountSid  在 TwilioApi.Execute  赋值,对于每一个请求它都是相同的。

    4、我们指定了从哪里开始反序列化的根元素名称,在本例中,返回的XML形如 ,因为Response元素不包含与我们定义的实体模型相关的任何信息,所以从元素树的下一个节点开始反序列化(Call节点)。

    我们还可以定义POST(和 PUT/DELETE/HEAD/OPTIONS )请求:

    // TwilioApi.cs, method of TwilioApi class
    public Call InitiateOutboundCall(CallOptions options) 
    {
        Require.Argument("Caller", options.Caller);
        Require.Argument("Called", options.Called);
        Require.Argument("Url", options.Url);
    
        var request = new RestRequest(Method.POST);
        request.Resource = "Accounts/{AccountSid}/Calls";
        request.RootElement = "Calls";
    
        request.AddParameter("Caller", options.Caller);
        request.AddParameter("Called", options.Called);
        request.AddParameter("Url", options.Url);
    
        if (options.Method.HasValue) request.AddParameter("Method", options.Method);
        if (options.SendDigits.HasValue()) request.AddParameter("SendDigits", options.SendDigits);
        if (options.IfMachine.HasValue) request.AddParameter("IfMachine", options.IfMachine.Value);
        if (options.Timeout.HasValue) request.AddParameter("Timeout", options.Timeout.Value);
    
        return Execute<Call>(request);
    }

    本示例同样证明RestSharp是一个轻量级验证助手,可以在请求前先校验提交的参数值是否有效。

    示例中通过AddParameter  方法添加的参数值将通过标准编码格式提交,类似于通过网页提交的表单。如果是GET形式的请求(GET/DELETE/OPTIONS/HEAD) ,参数值将通过查询字符串提交,AddParameter() 方法也可以添加头信息和cookie 参数。将一个对象的所有属性作为参数时,使用AddObject() 方法。上传一个文件时用 AddFile() 方法(请求会以多种编码格式发送),当请求中包含请求体时(例如XML或者JSON),用AddBody()方法。

    三、其它应用示例

    下面的示例演示了用流(stream)代替内存缓冲请求内容,这在请求大量数据同时需要立刻写入磁盘的场景下非常有用:

    string tempFile = Path.GetTempFileName();
    using (var writer = File.OpenWrite(tempFile))
    {
        var client = new RestClient(baseUrl);
        var request = new RestRequest("Assets/LargeFile.7z");
        request.ResponseWriter = (responseStream) => responseStream.CopyTo(writer);
        var response = client.DownloadData(request);
    }

    四、反序列化

    RestSharp拥有处理XML和JSON的反序列化器,当收到响应时,RestClient通过服务器返回的Content Type 选择适合的反序列化器。默认设置可以通过自定义设置的Content Type覆盖,支持的Content Type如下:

    • application/json - JsonDeserializer
    • application/xml - XmlDeserializer
    • text/json - JsonDeserializer
    • text/xml - XmlDeserializer
    • *+json - JsonDeserializer (content types using a Structured Suffix Syntax specifying JSON)
    • *+xml - XmlDeserializer (content types using a Structured Suffix Syntax specifying XML)
    • @*@ - XmlDeserializer (all other content types not specified)

    默认的反序列化器尝试解除必须解析XML或者JSON的痛苦,通过映射CLR实体类来实现。实体类定义了如何反序列化返回的数据。RestSharp不再采用遍历返回的数据,再从实体类中查找匹配的属性的方式反序列化数据,而是把实体类当作起点,循环遍历可访问的可写属性,同时在返回的数据中查找相应的元素。

    注意:默认的反序列化器不支持 DataAnnotation/DataMember ,如果要使用,必须实现和注册自己的IDeserializer ,IDeserializer 是包装了与实体类中属性兼容的反序列化库。

    例如下面的XML和JSON:

    <Person>
        <Name>John</Name>
        <Id>28</Id>
    </Person>
    
    {
        "Name": "John",
        "Id": 28
    }

    映射相同的实体类Person:

    public class Person 
    {
        public string Name { get; set; }
        public int Id { get; set; }
    }

    支持的属性类型(数据类型):

    XmlDeserializer:

    • Primitives (int, short, long, etc)
    • Decimal
    • DateTime
    • String
    • Guid
    • List
    • Nested classes
    • Nullable versions of the above listed types

    JsonDeserializer

    • Primitives
    • Decimal
    • DateTime
    • String
    • Guid
    • List
    • Dictionary<T1, T2>
    • Nested classes
    • Nullable versions of the above listed types

    名称匹配:

    XmlDeserializer

    当查找匹配元素时,默认的XML反序列化器查找元素和特性遵循以下顺序:

    • 元素和名称绝对匹配
    • 元素和名称的小写匹配
    • 元素和名称的骆驼命名匹配
    • 元素和名称去掉下划线和破折号匹配
    • 特性和名称绝对匹配
    • 特性和名称的小写匹配
    • 特性和名称的骆驼命名匹配
    • 特性和名称去掉下划线和破折号匹配

    可以使用@DeserializeAs@ 特性来更改将在属性中查找的名称,如果要将属性的命名与XML中的名称同,这一点将非常有用。

    例如:

    [DeserializeAs(Name = "forecast_information")]
    public ForecastInformation Forecast { get; set; }

    有一种返回元素值的特殊情况,示例如下:

    如果返回的XML数据如下:

    <Response>Hello world</Response>

    没有办法用c#的类直接描述

    public class Response 
    {
    }

    需要一些东西来保存返回的元素值,在本例中,添加一个Value属性:

    public class Response
    {
         public string Value { get; set; }
    }

    JsonDeserializer

    当为匹配元素查找数据时,默认的JSON反序列化器在查找元素时将遵循以下顺序:

    • 与名称绝对匹配
    • 与名称骆驼命名匹配
    • 与名称小写匹配
    • 与名称加了下划线匹配 (e.g. ProductId -> Product_Id)
    • 与名称加了下划线小写形式匹配 (e.g. Product_id -> product_id)

    XML反序列化器可以通过设置属性的DeserializeAs  特性来改变如何与JSON的键映射。

    例如:

    [DeserializeAs(Name = "forecast_information")]
    public ForecastInformation Forecast { get; set; }

    集合处理(List/Dictionary)

    XmlDeserializer

    处理两种不同形式的集合:内联和嵌套

    <?xml version="1.0" encoding="utf-8" ?>
    <InlineListSample>
        <image src="1.gif">value1</image>
        <image src="2.gif">value2</image>
        <image src="3.gif">value3</image>
        <image src="4.gif">value4</image>
    </InlineListSample>
    
    <?xml version="1.0" encoding="utf-8" ?>
    <NestedListSample>
       <images>
          <image src="1.gif">value1</image>
          <image src="2.gif">value2</image>
          <image src="3.gif">value3</image>
          <image src="4.gif">value4</image>
        </images>
    </NestedListSample>

    对应的c#形式如下:

    public class ListSample
    {
        public List<Image> Images { get; set; }
    }
        
    public class Image
    {
        public string Src { get; set; }
        public string Value { get; set; }
    }

    如果在同一份文档中两种元素结构恰巧同时存在,优先级按此顺序:parented/nested/regular 。

    JsonDeserializer

    在映射JSON数组和字典时,RestSharp支持集合(List)和字典(Dictionary<string, T> )

    日期处理

    XmlDeserializer

    • 如果RestRequest.DateFormat已经指定了返回值的格式,则返回值使用指定格式字符串解析。
    • 如果 RestRequest.DateFormat 没有指定, 用DateTime.Parse计算元素值. 如果该方法无法处理当前格式, 则需要改变属性类型为String然后再进行处理 。

    JsonDeserializer

    如果没有通过RestRequest.DateFormat指定日期格式,RestSharp尝试用以下格式字符转来反序列化DateTime类型的属性(顺序如下):

    • "u"
    • "s"
    • "yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'"
    • "yyyy-MM-ddTHH:mm:ssZ"
    • "yyyy-MM-dd HH:mm:ssZ"
    • "yyyy-MM-ddTHH:mm:ss"
    • "yyyy-MM-ddTHH:mm:sszzzzzz"

    JsonSerializer  默认支持以下JSON日期格式,如果指定了具体的RestRequest.DateFormat ,则默认被忽略:

    • ISO - 1910-09-25T09:30:25Z
    • Javascript Date Objects - new Date(-1870352975000)
    • Unix Timestamps - 1435206458

    对于JS日期对象,在JS纪元时间基础上加毫秒级的时间间隔,根据指定的时区调整。

    自定义

    重写默认反序列化器

    可以通过如下步骤重写自己的反序列化器处理返回的数据内:

    • 创建一个类同时实现IDeserializer接口。
    • 用RestClient.AddHandler(contentType, IDeserializer)方法注册handler并关联content类型,如果此content类型已经被注册过,则会被指定的刚刚指定的handker重写,可以通过 RestClient.ClearHandlers()方法移除所有注册的handler,或者通过RestClient.RemoveHandler(contentType)移除某一个handler。

    重写默认的序列化器

    当使用XML或者JSON格式数据作为请求体时,可以使用自己实现的ISerializer  :

    var request = new RestRequest();
    request.RequestFormat = DataFormat.Xml;
    request.XmlSerializer = new SuperXmlSerializer(); // implements ISerializer
    request.AddBody(person); // object serialized to XML using your custom serializer;

    重写JsonSerializationStrategy

    序列化过程中,尝试支持c#和JSOM间不同投影策略将会陷入麻烦,重写MapClrMemberNameToJsonFieldName 将会有帮助:

    class SnakeJsonSerializerStrategy : PocoJsonSerializerStrategy
    {
        protected override string MapClrMemberNameToJsonFieldName(string clrPropertyName)
        {
            //PascalCase to snake_case
            return string.Concat(clrPropertyName.Select((x, i) => i > 0 && char.IsUpper(x) ? "_" + char.ToLower(x).ToString() : x.ToString()));
        }
    }

    然后在代码中使用:

    SimpleJson.CurrentJsonSerializerStrategy = new SnakeJsonSerializerStrategy();

    五、认证

    RestSharp包含HTTP认证,可以通过IAuthenticator  完成自己的实现同时用RestClient注册:

    var client = new RestClient();
    client.Authenticator = new SuperAuthenticator(); // implements IAuthenticator

    在使用RestClient.Execute 或 RestClient.Execute

    使用SimpleAuthenticator

    SimpleAuthenticator 允许把用户名和密码当作GET 或 POST参数传递,具体取决于所使用的请求方法:

    var client = new RestClient("http://example.com");
    client.Authenticator = new SimpleAuthenticator("username", "foo", "password", "bar");
    
    var request = new RestRequest("resource", Method.GET);
    client.Execute(request);

    请求生成的URL应该是如下形式:http://example.com/resource?username=foo&password=bar

    上述请求如果使用PUT或者POST请求时,将会以编码表单形式提交值。

    六、RestRequest的参数类型

    新建了RestRequest 后,可以为它添加参数,下面是5种当前支持的参数类型以及其在使用默认IHttp实现下的特性描述。

    添加到cookies  列表的参数将会随着请求被单独发送,Cookie名称是参数的名称,值则是传递的参数的值(.ToString )。

    HttpHeader

    添加作为 HTTP header 的参数会随着请求被单独发送,Header名称是参数的名称,Header值则是传递的参数的值。

    注意有些受限制的headers表现不同或者会被忽略,可以在Http.cs中的_restrictedHeaderActions  字典中查看它们的特性。

    GetOrPost

    如果执行GET请求,RestSharp将会追加参数到URL中,形式如下:“url?name1=value1&name2=value2” ;

    如果是POST或者是PUT请求,则取决于请求中是否有文件,如果没有,则参数以请求体发送,形如“name1=value1&name2=value2” ,将会以application/x-www-form-urlencoded格式发送,基于不同的请求方法会有不同的表现。

    两种情形下,参数名称和值都会自动被url编码。

    如果请求中有文件,RestSharp将会发送multipart/form-data 形式的请求,发送的参数将会形如以下格式:

    Content-Disposition: form-data; name="parameterName"
    
    ParameterValue

    UrlSegment

    不同于GetOrPost ,这种参数类型在RequestUrl 中用占位符代替值。

    var request = new RestRequest("health/{entity}/status");
    request.AddParameter("entity", "s2", ParameterType.UrlSegment);

    当执行请求时,RestSharp将尝试用参数名称匹配占位符,匹配成功后则用参数值代替占位符,上面的代码结果是:“health/s2/status”  。

    RequestBody

    如果设置了这个参数,参数值会以请求的body方式传递。请求只能接收一个RequestBody  参数(第一个)。

    参数名称将被用作请求的Content-Type header 。

    RequestBody  参数对于GET或者HEAD  是无效的,它们不需要发送请求体。

    如果同时还有GetOrPost  参数,则该参数将重写RequestBody  ——RestSharp  不会合并这些参数,但会抛弃RequestBody  参数。

    QueryString

    类似于GetOrPost ,除此之外,它总是用如下形式追加参数到URL:“url?name1=value1&name2=value2” ,不管是什么类型的请求方法。

    七、缓存

    自动缓存管理

    RestSharp 102.4 +版本支持所有IRestClient 实例的请求共享同一个System.Net.CookieContainer 管理,通过这种方式,responses 设置或没设置缓存在后续的请求中都会使用,为了共享CookieContainer ,在创建RestClient 时设置属性即可:

    var client = new RestClient("http://server/");
    client.CookieContainer = new System.Net.CookieContainer();

    八、跨平台支持

    RestSharp包含2个版本的lib:

    • .NET Framework 4.5.2
    • .NET Standard 2.0

    意味着可以在以下平台应用RestSharp:

    • Windows using .NET Framework
    • Windows using .NET Core
    • Linux or Mac using Mono
    • Linux or Mac using .NET Core
    • Any other platform that supports Mono 5 or .NET Core 2
    • http://www.cgpwyj.cn/
      http://www.peacemind.com.cn/
      http://www.tasknet.com.cn/
      http://www.ownbar.cn/
      http://news.ownbar.cn/
      http://item.ownbar.cn
      http://www.shtarchao.net.cn/
      http://news.shtarchao.net.cn/
      http://item.shtarchao.net.cn/
      http://www.metroworld.com.cn/
      http://www.cngodo.cn/
      http://www.gzrdbp.cn/
      http://www.dnapt.cn/
      http://www.ncxlk.cn/
      http://www.zgxxyp.cn/
      http://www.sjjdvr.cn/
      http://www.sujinkeji.cn/
      http://www.zsjxbd.cn/
      http://www.yesgas.cn/
      http://www.quickpass.sh.cn/
      http://www.jspcrm.cn/
      http://www.yjdwpt.cn/
      http://www.henanwulian.cn/
      http://www.hhrshh.cn/
      http://www.gpgold.cn/
      http://www.jingzhuiyou.cn/
    展开全文
  • RestSharp 实现Get,Post 请求。
  • RestSharp介绍

    千次阅读 2020-02-25 18:11:32
    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可以简化用户访问...
  • 互联网上关于.NET(C#)的HTTP相关的辅助类还是比较多的,这里再为大家推荐一个.NET的HTTP辅助类,它叫...RestSharp具有以下的优点:支持.NET 3.5+,Silverlight 4, Windows Phone 7, Mono, MonoTouch, Mono for Androi...
  • RestSharp解决Encoding乱码问题

    千次阅读 2019-01-07 17:33:05
    RestSharp是一个第三方开源的Http模拟请求辅助类,其底层实现基于System.Net.HttpWebRequest,且不依赖于任何第三方控件。其github地址为:...一般情况下,RestSharp都工作的很好,只是当...
  • RestSharp的使用说明

    千次阅读 2020-03-20 10:53:23
    RestSharp可能是.NET中最受欢迎的HTTP客户端库,具有自动序列化和反序列化,请求和响应类型检测,各种身份验证以及其他有用的功能,正在被成千上万的项目使用。 RestSharp在NuGet上的下载量超过3200万,评价每日下载...
  • RestSharp使用总结

    千次阅读 2018-04-27 10:56:01
    https://www.cnblogs.com/rakers/p/7828854.htmlRestSharp是一个轻量的,不...RestSharp具有以下的优点: 1、支持.NET 3.5+,Silverlight 4, Windows Phone 7, Mono, MonoTouch, Mono for Android, Compact Framew...
  • 说明 RestSharp的主要目的是通过HTTP对远程资源进行同步和异步调用。顾名思义,RestSharp的主要受众是使用REST API的开发人员。...RestSharp可以负责将请求正文序列化为JSON或XML并反序列化响应。它还可以根据不同的参
  • c# RestSharp(http请求)

    万次阅读 2020-06-01 21:42:06
    介绍:RestSharp RestSharp是一个轻量的,不依赖... 2、可以自动反序列化XML和JSON 3、支持自定义的序列化与反序列化 4、自动检测返回的内容类型 5、支持HTTP的GET, POST, PUT, HEAD, OPTIONS, DELETE等操作 ...
  • 如何使用RestSharp使用ASP.NET Core Web API

    千次阅读 2020-05-19 14:13:54
    REST是“代表性状态转移”的首字母缩写,该体系结构样式在过去几年中非常流行。 RESTful API是根据REST的原理和准则构建的 ... RestSharp提供了一个开发人员友好的界面来使用RESTful服务,同时抽象了处理HTTP请求...
  • // 用于JSON序列化/反序列化 using Newtonsoft.Json.Linq; // 用于构建JSON对象 二、构建Client var client = new RestClient("需要请求的URI(不带参数的URL,如:https://www.baidu.com/s)"); 三、构建Request...
  • restsharp 106.10.1 说明: 要测试restsharp的功能,首先需要了解http传参和下载上传文件的原理,请参考: c#:从http请求报文看http协议中参数传递的几种方式 c#使用Http上传下载文件 一、首先准备webapi项目 ...
  • Restsharp确实是个优秀的插件,它最大的特点是内置了JsonConverter, 在一定程度上简化了HttpWebRequest的使用,在nuget上面有19.3M的下载量,是个很好的证明。 但我认为它的致命缺陷就在于内置了JsonConverter, 在...
  • 对于RESTful的返回值json数据,在RestSharp中已经有相关的反序列化实现,当然首先得有json对应的C#实体类,通过在线的一些网站可以很快获得这个类: http://www.jsons.cn/jsontomodel/ 通过以上网站,转换得到...
  •  4、支持自定义的序列化与反序列化  5、自动检测返回的内容类型  6、支持HTTP的GET, POST, PUT, HEAD, OPTIONS, DELETE等操作  7、可以上传多文件  8、支持oAuth 1, oAuth 2, Basic, NTLM and Parameter-...
  • RestSharp用法小结

    2017-09-16 14:47:00
    今天有空,小结一下...RestSharp内置了XML和JSON的反序列化(deserializers )。 application/json – JsonDeserializer application/xml – XmlDeserializer text/json – JsonDeserializer text/xml –...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 226
精华内容 90
关键字:

restsharp反序列化