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

四测试过程和结果

相关推荐
烛阴42 分钟前
bignumber.js深度解析:驾驭任意精度计算的终极武器
前端·javascript·后端
服务端技术栈1 小时前
电商营销系统中的幂等性设计:从抽奖积分发放谈起
后端
你的人类朋友1 小时前
✍️Node.js CMS框架概述:Directus与Strapi详解
javascript·后端·node.js
面朝大海,春不暖,花不开2 小时前
自定义Spring Boot Starter的全面指南
java·spring boot·后端
钡铼技术ARM工业边缘计算机2 小时前
【成本降40%·性能翻倍】RK3588边缘控制器在安防联动系统的升级路径
后端
CryptoPP3 小时前
使用WebSocket实时获取印度股票数据源(无调用次数限制)实战
后端·python·websocket·网络协议·区块链
白宇横流学长3 小时前
基于SpringBoot实现的大创管理系统设计与实现【源码+文档】
java·spring boot·后端
草捏子4 小时前
状态机设计:比if-else优雅100倍的设计
后端
考虑考虑5 小时前
Springboot3.5.x结构化日志新属性
spring boot·后端·spring
涡能增压发动积5 小时前
一起来学 Langgraph [第三节]
后端