首页 > 解决方案 > IRestResponse返回内容mvc c#

问题描述

我已经构建了一个 API,它将参数发布到外部 URL 并得到了完美的工作如何返回我正在使用 asp.net MVC 核心 c# 的内容

这是我的审判

 [HttpPost("post")]
        public async Task<IActionResult> postuser(postDtos postdDtos)
        {

            var client = new RestClient("https://www.xxxx.com/post");
            var request = new RestRequest(Method.POST);
            request.AddHeader("cache-control", "no-cache");
            request.AddHeader("content-type", "application/json");
            request.AddParameter("application/json", "{\n\t\"UserName\": \"" +  postdDtos.UserName + "\"\n}", ParameterType.RequestBody);
            IRestResponse response = client.Execute(request);

            return StatusCode(response.StatusCode != System.Net.HttpStatusCode.OK ? 400 : 201);

        }

我需要将状态码 400: 201 更改为响应内容我如何才能实现它,尤其是我使用了 IActionResult 并且当我将其更改为 IRestResponse 时,API 不起作用

标签: asp.net-mvcasp.net-core

解决方案


  1. 首先,查看响应并将您的响应设为 DTO 类。
  2. 之后使用 NewtonSoft 或其他库反序列化响应,并以 JSON 形式返回。

        [HttpPost("post")]
        public async Task<IActionResult> postuser(postDtos postdDtos)
        {
    
            var client = new RestClient("https://www.xxxx.com/post");
            var request = new RestRequest(Method.POST);
            request.AddHeader("cache-control", "no-cache");
            request.AddHeader("content-type", "application/json");
            request.AddParameter("application/json", "{\n\t\"UserName\": \"" +  postdDtos.UserName + "\"\n}", ParameterType.RequestBody);
            IRestResponse response = client.Execute(request);
            var status = StatusCode(response.StatusCode != System.Net.HttpStatusCode.OK ? 400 : 201);
            var yourDto = JsonConvert.DeserializeObject<YourDTO>(response.Content);
            return Json(new {status = status , response = "Blech"});
        }
    

推荐阅读