C#中使用RestRequest发送JSON格式POST请求的最优实现方式
C# 发送JSON格式POST请求最优实现方案
前置说明
你给出的示例代码使用RestSharp封装库实现,该库是.NET生态中对新手非常友好的HTTP请求工具,以下方案完全匹配你要求的核心逻辑格式,同时规避手动拼接JSON的易错问题。
实现步骤
1. 安装依赖包
通过NuGet包管理器安装RestSharp最新稳定版即可。
2. 定义强类型实体类
不建议手动拼接JSON字符串,用强类型映射可以完全避免JSON语法错误,写错字段IDE会直接提示
// 所有者信息映射类 public class Owner { public string fullName { get; set; } public string ssn { get; set; } public string dateOfBirth { get; set; } } // 请求主体映射类 public class DealPostData { public string externalDealId { get; set; } public string dealName { get; set; } public string dealDba { get; set; } public string federalId { get; set; } public Owner owner1 { get; set; } public Owner owner2 { get; set; } public Owner owner3 { get; set; } }
3. 编写请求方法(核心逻辑完全匹配要求格式)
using RestSharp; using System.Text.Json; /// <summary> /// 发送JSON格式POST请求 /// </summary> /// <param name="apiUrl">目标接口地址</param> /// <param name="postData">请求业务数据</param> /// <returns>接口响应结果</returns> public async Task<RestResponse> PostJsonRequest(string apiUrl, DealPostData postData) { var client = new RestClient(apiUrl); // 以下是你要求的核心逻辑格式 var request = new RestRequest(Method.POST); request.AddHeader("Content-Type", "application/json"); // 自动序列化对象为JSON字符串 string jsonPayload = JsonSerializer.Serialize(postData); request.AddParameter("application/json", jsonPayload, ParameterType.RequestBody); // 发送请求,如需同步调用可以把ExecuteAsync改成Execute,去掉async/await var response = await client.ExecuteAsync(request); return response; }
4. 调用示例
// 构造业务数据 var requestData = new DealPostData { externalDealId = "1", dealName = "Test Ver2", dealDba = "Test Ver2", federalId = "12312111", owner1 = new Owner { fullName = "J1", ssn = "123123220", dateOfBirth = "1988-01-01" }, owner2 = new Owner { fullName = "J2", ssn = "123123221", dateOfBirth = "1988-01-02" }, owner3 = new Owner { fullName = "J3", ssn = "123123222", dateOfBirth = "1988-01-02" } }; // 调用方法发请求 var response = await PostJsonRequest("替换成你的目标接口地址", requestData); // 响应结果判断 if (response.IsSuccessful) { Console.WriteLine("请求成功,返回内容:" + response.Content); } else { Console.WriteLine("请求失败,错误:" + response.ErrorMessage); }
注意事项
- 如果你用的是.NET Framework老版本,没有自带
System.Text.Json,可以替换为Newtonsoft.Json的JsonConvert.SerializeObject(postData)方法做序列化 - 生产环境建议把
RestClient做成单例复用,不要每次请求都新建实例,避免端口占用问题
内容的提问来源于stack exchange,提问作者maitre
相关产品推荐
相关产品推荐

