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 小时前
深入 Go 并发编程:从 Goroutine 到 Channel 的系统性避坑指南
后端·go
雪隐7 小时前
AI股票小助手04-miniQMT数据采集
人工智能·后端
苏三说技术7 小时前
MybatisPlus Pro 来了,CURD开发效率直接拉满!
后端
小江的记录本7 小时前
【JVM虚拟机】类加载机制:类加载器、双亲委派模型、好处、破坏双亲委派的场景(附《思维导图》+《面试高频考点清单》)
java·jvm·spring boot·后端·python·spring·面试
李少兄7 小时前
Spring 对象创建范式:依赖注入与直接实例化的边界抉择
java·后端·spring
二月龙7 小时前
SpringBoot 简化开发的核心原理:告别繁琐配置
后端
Java内核笔记7 小时前
Spring Security 过滤器链全景图:从 FilterOrderRegistration 到实战配置
后端
文心快码BaiduComate7 小时前
Comate搭载MiniMax M3:支持超长百万上下文
前端·人工智能·后端
404号扳手8 小时前
Java 进阶知识(八)
java·后端
PILIPALAPENG8 小时前
Skills篇-findskills:告别手动迁移Skill!跨AI工具通用能力,才是真高效
前端·人工智能·后端