using System.Text; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; namespace HttpClientStudy.WebApp.Controllers { /// /// 高级Get请求 控制器 /// [Route("api/[controller]/[action]")] [ApiController] public class AdvancedGetController : ControllerBase { private ILogger _logger; /// /// 构造 /// public AdvancedGetController(ILogger logger) { _logger = logger; } /// /// 带请求体数据的Get请求 /// (asp.net 3开始,默认不允许Get有Body) /// 注意:不能直接使用模型绑定接收数据,而应以流的方式读取请求体中的数据 /// /// [HttpGet] public async Task GetWithBodyAsync() { var requestBody = ""; //以流方式读取请求体中的数据 if (Request.ContentLength>0) { using (var reader = new StreamReader(Request.Body, Encoding.UTF8, detectEncodingFromByteOrderMarks: false, bufferSize: 1024, leaveOpen: true)) { requestBody = await reader.ReadToEndAsync(); // 现在你有了请求体,可以按照你的需求处理它 } } var result = BaseResultUtil.Success(requestBody); return Ok(result); } /// /// Post测试方法 /// /// [HttpGet] public IActionResult PostDemo() { var result = BaseResultUtil.Success("操作成功"); return Ok(result); } } }