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);
        }

四测试过程和结果

相关推荐
无籽西瓜a9 分钟前
【西瓜带你学设计模式 | 第五期 - 建造者模式】建造者模式 —— 产品构建实现、优缺点与适用场景及模式区别
java·后端·设计模式·软件工程·建造者模式
小江的记录本1 小时前
【Spring注解】Spring生态常见注解——面试高频考点总结
java·spring boot·后端·spring·面试·架构·mvc
程序员cxuan1 小时前
来了来了,Claude Code 全架构解析 !!!
人工智能·后端·claude
艾莉丝努力练剑1 小时前
【Linux信号】Linux进程信号(下):可重入函数、Volatile关键字、SIGCHLD信号
linux·运维·服务器·c++·人工智能·后端·学习
常利兵1 小时前
Spring Boot 实现网络限速:让流量“收放自如”
网络·spring boot·后端
掘金者阿豪1 小时前
Claude Code“泄漏源码”曝光:Anthropic 最强终端 AI,原来早就不是聊天工具了
后端
无籽西瓜a2 小时前
【西瓜带你学设计模式 | 第七期 - 适配器模式】适配器模式 —— 类适配器与对象适配器实现、优缺点与适用场景
java·后端·设计模式·软件工程·适配器模式
前端付豪2 小时前
实现消息级操作栏
前端·人工智能·后端
计算机学姐2 小时前
基于SpringBoot的新能源充电桩管理系统
java·vue.js·spring boot·后端·mysql·spring·java-ee
瑶山2 小时前
SpringBoot + MongoDB 5分钟快速集成:从0到1实操指南
java·数据库·spring boot·后端·mongodb