C#交互——接受带请求头的请求和返回带响应头参数

这是对接万里汇项目中用到的一个请求和响应,要求带请求头参数和响应头参数。是第一次遇到,所以做了这么一个笔记。方便以后需要,便于查找。并借助gpt平台,有了下面的示例,感谢网络,感谢平台! 在C#中,你可以通过 ASP.NET Core 中的 HttpContext 对象来获取请求头和请求参数。以下是一个示例代码:

一 接受请求头和请求参数

C# 复制代码
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;

namespace YourNamespace
{
    [ApiController]
    [Route("api/[controller]")]
    public class RequestController : ControllerBase
    {
        [HttpGet]
        public ActionResult Get()
        {
            // 获取请求头
            var headers = HttpContext.Request.Headers;

            // 获取查询参数(GET 请求)
            var queryParams = HttpContext.Request.Query;

            // 获取表单数据(POST 请求)
            var formData = HttpContext.Request.Form;

            // 获取 JSON 数据(POST 请求)
            //var jsonData = await new StreamReader(HttpContext.Request.Body).ReadToEndAsync();

            // 返回请求头和请求参数
            return Ok(new
            {
                Headers = headers,
                QueryParams = queryParams,
                FormData = formData,
                //JsonData = jsonData
            });
        }
    }
}

在上面的示例代码中,RequestController 是一个控制器类,对应于 /api/request 路由。通过将请求发送到该路由,你可以通过 GET 请求获取查询参数,或者通过 POST 请求获取表单数据或 JSON 数据。你可以根据实际情况选择解析不同类型的数据。

C# 复制代码
using System.Web.Mvc;

namespace YourNamespace.Controllers
{
    public class RequestController : Controller
    {
        public ActionResult Index()
        {
            // 获取请求头信息
            var headers = Request.Headers;

            // 可以根据需要获取特定的请求头信息
            var userAgent = Request.UserAgent;
            var contentType = Request.ContentType;
            // ...

            // 处理请求并返回结果
            return Content("Request Header Received");
        }
    }
}

二 C# 中设置响应头和响应参数

在 C# 中,你可以使用 ASP.NET Core 或 ASP.NET MVC 框架来编写响应头和响应参数。以下是一个示例代码,展示了如何使用 ASP.NET Core 和 ASP.NET MVC 分别编写响应头和响应参数。

ASP.NET Core 示例:

C# 复制代码
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;

namespace YourNamespace.Controllers
{
    [ApiController]
    [Route("api/[controller]")]
    public class ResponseController : ControllerBase
    {
        [HttpGet]
        public ActionResult Get()
        {
            // 设置响应头
            HttpContext.Response.Headers.Add("CustomHeader", "CustomHeaderValue");

            // 返回响应参数
            return Ok(new
            {
                Param1 = "Value1",
                Param2 = "Value2"
            });
        }
    }
}

ASP.NET MVC 示例:

C# 复制代码
using System.Web.Mvc;

namespace YourNamespace.Controllers
{
    public class ResponseController : Controller
    {
        public ActionResult Index()
        {
            // 设置响应头
            Response.AddHeader("CustomHeader", "CustomHeaderValue");

            // 返回响应参数
            return Json(new
            {
                Param1 = "Value1",
                Param2 = "Value2"
            }, JsonRequestBehavior.AllowGet);
        }
    }
}

三测试代码

C# 复制代码
     [HttpPost]
        public ActionResult notifyPayout(NotifyPayoutModel model)
        {
            var headers = Request.Headers;

            Response.AddHeader("CustomHeader", "CustomHeaderValue");
            Response.AddHeader("test", "aaaaa");
            Response.AddHeader("bbb", "cccc");
            var data = JsonConvert.SerializeObject(headers);
            return Content(data);
        }

四测试过程和结果

相关推荐
码事漫谈7 分钟前
为什么C语言拒绝函数重载?非要重载怎么做?
后端
码事漫谈24 分钟前
浅谈C++与C语言二进制文件差异(从一次链接错误说起)
后端
空白诗2 小时前
mdcat 在 HarmonyOS 上的构建与适配
后端·安全·华为·rust·harmonyos
y***61313 小时前
SpringBoot集成Flowable
java·spring boot·后端
i***22073 小时前
springboot整合libreoffice(两种方式,使用本地和远程的libreoffice);docker中同时部署应用和libreoffice
spring boot·后端·docker
e***87704 小时前
windows配置永久路由
android·前端·后端
代码or搬砖4 小时前
SpringMVC的执行流程
java·spring boot·后端
极光代码工作室5 小时前
基于SpringBoot的流浪狗管理系统的设计与实现
java·spring boot·后端
Rust语言中文社区5 小时前
【Rust日报】Dioxus 用起来有趣吗?
开发语言·后端·rust