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

四测试过程和结果

相关推荐
武子康1 小时前
Java-72 深入浅出 RPC Dubbo 上手 生产者模块详解
java·spring boot·分布式·后端·rpc·dubbo·nio
椰椰椰耶2 小时前
【Spring】拦截器详解
java·后端·spring
brzhang3 小时前
我操,终于有人把 AI 大佬们 PUA 程序员的套路给讲明白了!
前端·后端·架构
wan_da_ren6 小时前
JVM监控及诊断工具-GUI篇
java·开发语言·jvm·后端
【本人】6 小时前
Django基础(一)———创建与启动
后端·python·django
lifallen6 小时前
Kafka 时间轮深度解析:如何O(1)处理定时任务
java·数据结构·分布式·后端·算法·kafka
你的人类朋友6 小时前
【✈️速通】什么是SIT,什么是UAT?
后端·单元测试·测试
程序无bug9 小时前
后端3行代码写出8个接口!
java·后端
绝无仅有9 小时前
使用LNMP一键安装包安装PHP、Nginx、Redis、Swoole、OPcache
后端·面试·github
他日若遂凌云志9 小时前
C++ 与 Lua 交互全链路解析:基于Lua5.4.8的源码剖析
后端