using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using RestSharp; namespace YuanXuan.IM.Common.Helpers { /// /// RestSharpHelper /// public class RestSharpHelper { private readonly RestClient _client; /// /// 构造函数,初始化 RestClient /// public RestSharpHelper() { _client = new RestClient(); } /// /// 发送 GET 请求 /// /// 完整的请求 URL /// 请求头 /// 响应数据 public async Task GetAsync(string url, Dictionary? headers = null) { var request = new RestRequest(url, Method.Get); AddHeaders(request, headers); var response = await _client.ExecuteAsync(request); return HandleResponse(response); } /// /// 发送 POST 请求 /// /// 完整的请求 URL /// 请求体 /// 请求头 /// 响应数据 public async Task PostAsync(string url, object body, Dictionary? headers = null) { var request = new RestRequest(url, Method.Post); AddHeaders(request, headers); request.AddBody(body); var response = await _client.ExecuteAsync(request); return HandleResponse(response); } /// /// 发送 POST 请求 /// /// 完整的请求 URL /// 请求体 /// 请求头 /// 响应数据 public async Task PostByJsonBodyAsync(string url, object body, Dictionary? headers = null) { var request = new RestRequest(url, Method.Post); AddHeaders(request, headers); request.AddJsonBody(body); var response = await _client.ExecuteAsync(request); return HandleResponse(response); } /// /// 发送 PUT 请求 /// /// 完整的请求 URL /// 请求体 /// 请求头 /// 响应数据 public async Task PutAsync(string url, object body, Dictionary? headers = null) { var request = new RestRequest(url, Method.Put); AddHeaders(request, headers); request.AddJsonBody(body); var response = await _client.ExecuteAsync(request); return HandleResponse(response); } /// /// 添加请求头 /// /// RestSharp 请求对象 /// 请求头 private void AddHeaders(RestRequest request, Dictionary? headers) { if (headers != null) { foreach (var header in headers) { request.AddHeader(header.Key, header.Value); } } } /// /// 处理响应 /// /// RestSharp 响应对象 /// 响应数据 /// 当响应失败时抛出异常 private string HandleResponse(RestResponse response) { if (response.IsSuccessful && response.Content != null) { return response.Content; } throw new Exception($"请求失败: {response.StatusCode}, 错误信息: {response.ErrorMessage ?? response.Content}"); } } }