使用RestSharp调用API失败:推荐方式失效,Get与IRestResponse不存在
RestSharp 107+ 版本API兼容问题解决
你遇到的问题是因为使用了RestSharp 107及以上的新版本,这个版本对API做了重大重构,移除了旧版的Method.GET、IRestResponse等类型,同时推荐使用异步调用方式。
以下是修正后的代码:
基础异步调用示例
using System; using RestSharp; // 初始化客户端,可通过RestClientOptions配置更多参数 var client = new RestClient("Link"); // 创建请求并添加头部 var request = new RestRequest() .AddHeader("DB-Client-Id", "clientId") .AddHeader("DB-Api-Key", "clientSecret") .AddHeader("accept", "application/json"); // 异步执行请求(新版本推荐方式) var response = await client.ExecuteAsync(request); // 处理响应 if (response.IsSuccessful) { Console.WriteLine("请求成功,响应内容:"); Console.WriteLine(response.Content); } else { Console.WriteLine($"请求失败:{response.ErrorMessage}"); }
泛型反序列化示例(直接获取强类型对象)
如果需要直接将响应解析为自定义类型,可以使用泛型方法:
// 假设你定义了对应的响应模型 public class ApiResponse { // 根据API返回结构定义属性 public string Data { get; set; } public int Code { get; set; } } // 调用泛型异步方法 var response = await client.ExecuteAsync<ApiResponse>(request); if (response.IsSuccessful) { // 直接使用强类型对象 Console.WriteLine($"响应码:{response.Data.Code},数据:{response.Data.Data}"); }
关键变化说明
- 枚举
Method的成员命名改为PascalCase,旧版Method.GET替换为Method.Get(不过在RestRequest构造器中可以省略,直接通过client.GetAsync等快捷方法指定请求方式) - 旧版
IRestResponse接口被移除,改用具体的RestResponse类,泛型场景使用RestResponse<T> - 新版本优先推荐异步API(
ExecuteAsync、GetAsync、PostAsync等),同步方法Execute仍存在但返回RestResponse而非IRestResponse - 序列化默认使用
System.Text.Json,若需使用Newtonsoft.Json,可通过RestClientOptions配置对应的序列化器
内容的提问来源于stack exchange,提问作者cas
相关产品推荐
相关产品推荐

