Restsharp在使用上的一点小问题

Restsharp确实是个优秀的插件,它最大的特点是内置了JsonConverter, 在一定程度上简化了HttpWebRequest的使用,在nuget上面有19.3M的下载量,是个很好的证明。

但我认为它的致命缺陷就在于内置了JsonConverter, 在使用时无法将实体类与Http访问做解耦,因此很难封装成一个helper类。当然可以用泛型来解决这个问题,如果不考虑解耦的话。

第二个问题是,它内置的JsonConvert要求实体类有无参数的构造函数,而NewtonJson不用。

   实际上,我在实体类上加入了无参数的构造函数,但还是反序列化失败了:

    response2.Data返回null, response2.Content返回实体的Json

第三个问题,支持的.net Framework版本比较少

    我在4.0,4.5上nuget失败,在4.5.2nuget成功。

留下代码做个记录

   public Person CheckPerson(WorkInfo workInfo, int page, int pageSize)
        {
            string baseUrl = "https://api.abc.com/api";
            string url = "/Person";
            url += page == 100 ? page.ToString() : pageSize + "/" + page;
            //发送HTTPS请求  
            if (baseUrl.StartsWith("https", StringComparison.OrdinalIgnoreCase))
            {
                HwApiHelper.SetCertificatePolicy();
            }
            var client = new RestClient(baseUrl);

            var request = new RestRequest(url);
            request.Timeout = 30000;

            request.Method = Method.POST;
            request.AddHeader("Content-Type", "application/json");
            request.AddHeader("Authorization", "Bearer " + token.Access_token);
            request.AddHeader("soapAction", "");
            request.AddJsonBody(workInfo);//直接传输一个实体,无需如HttpWebRequest那样,先序列化,编码成byte[],再通过WriteSteam写
            /*                                
            //方式1:按指定的格式返回响应文本
            IRestResponse response = client.Execute(request);
            var content = response.Content;//按指定的格式返回响应文本,如json
            */
            //方式2:用内置反序列化工具直接反序列化为实体,要求实体类有无参数的构造函数
            IRestResponse<Person> response2 = client.Execute<Person>(request);
            //已经增加了无参构造函数,却可能不成功

            return response2.Data;
        }

       public class Person
        {
            public string Name { get; set; }
            public DateTime BornDate { get; set; }
            public string Gender { get; set; }
            public Person()
            {

            }
        }
       public  class WorkInfo
        {
            public string Company { get; set; }
            public string Title { get; set; }
        }

 

转载于:https://www.cnblogs.com/ccjungle/p/10741853.html

`RestSharp` 是一个 .NET 库,用于执行 RESTful API 请求。它提供了一种简单的方式来发送 HTTP GET, POST, PUT, DELETE 等请求,并处理响应。以下是如何使用 `RestSharp` 的基本步骤: 1. 安装 RestSharp 库: 首先,确保你在项目中安装了 RestSharp。如果你使用的是 NuGet 包管理器,可以在 Package Manager Console 中运行: ``` Install-Package RestSharp ``` 2. 引入命名空间: 在 C# 文件中添加 `RestSharp` 的命名空间引用: ```csharp using RestSharp; ``` 3. 创建 `IRestClient` 对象: 这是发起 API 请求的主要工具,你可以配置基础 URL 和其他设置: ```csharp IRestClient client = new RestClient("https://api.example.com"); ``` 4. 发起请求: 使用 `IRestClient` 创建 `IRestRequest` 对象,然后根据需要设置请求的方法(GET, POST, PUT, DELETE 等)和参数。例如,发送一个 GET 请求获取数据: ```csharp IRestRequest request = new RestRequest(Method.GET); // 添加查询参数或路径参数 request.AddParameter("key", "value"); ``` 5. 执行请求并接收响应: ```csharp IRestResponse response = client.Execute(request); string responseBody = response.Content; // 获取 JSON 或 XML 数据 int statusCode = response.StatusCode; // 检查 HTTP 状态码 ``` 6. 错误处理: 可能会有网络错误、API 返回错误等情况,你需要检查 `response.ErrorException` 或 `statusCode` 来处理异常。 7. 关闭连接: 如果你计划多次使用同一个客户端,记得关闭连接以释放资源: ```csharp client.Dispose(); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值