当前位置: 首页 > article >正文

ASP.NET Core 如何使用 C# 向端点发出 POST 请求

使用 C#,将 JSON POST 到 REST API 端点;如何从 REST API 接收 JSON 数据。

本文需要 ASP .NET Core,并兼容 .NET Core 3.1、.NET 6和.NET 8。

要从端点获取数据,请参阅本文。

使用 . 将 JSON 数据发布到端点非常容易HttpClient,WebClient并且HttpWebRequest不应使用,因为在撰写本文时它们已被弃用。

将 JSON 发布到端点

private async Task PostJson()
{
    string json = System.Text.Json.JsonSerializer.Serialize(new { name = "test" });

    using (var client = new System.Net.Http.HttpClient())
    {
        client.Timeout = System.Threading.Timeout.InfiniteTimeSpan;

        var response = await client.PostAsync("http://0.0.0.0/endpoint", new StringContent(json, Encoding.UTF8, "application/json"));

        var repsonseObject = System.Text.Json.JsonSerializer.Deserialize<object> // NOTE: replace "object" with class name

            (await response.Content.ReadAsStringAsync());
        // NOTE: use responseObject here
    }
}
await PostJson();

使用 JSON Web Token Bearer 身份验证进行 POST

使用 JWT Bearer Authentication 向端点发送 POST 消息非常简单。只需使用HttpRequestMessage类和SendAsync()方法即可。

private async Task PostJsonWithJwtAuth()
{
    object? responseObject = null; // NOTE: replace "object" with the class name

    string json = System.Text.Json.JsonSerializer.Serialize(new { data = "ABCD1234" });

    using (var client = new System.Net.Http.HttpClient())
    {
        client.Timeout = System.Threading.Timeout.InfiniteTimeSpan;

        var requestMsg = new HttpRequestMessage(HttpMethod.Post, "http://0.0.0.0/endpoint");

        requestMsg.Content = new StringContent(json, Encoding.UTF8, "application/json");

        string jwt = "asidlfbvc87w4tguiwebo87w4gqowuy4bfoq4837yo8f3fl"; // NOTE: THIS IS THE JSON WEB TOKEN; REPLACE WITH A REAL JWT
        requestMsg.Headers.Add("Authorization", "Bearer " + jwt);

        var response = await client.SendAsync(requestMsg);

        if (response.StatusCode == System.Net.HttpStatusCode.Unauthorized)
        {
            // NOTE: THEN TOKEN HAS EXPIRED; HANDLE THIS SITUATION
        }
        else if (response.StatusCode == System.Net.HttpStatusCode.NoContent)
            responseObject = null;
        else if (response.IsSuccessStatusCode)
            responseObject = await response.Content.ReadFromJsonAsync<object>(); // NOTE: replace "object" with the class name
    }
}
await PostJsonWithJwtAuth();

如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。   


http://www.kler.cn/a/539430.html

相关文章:

  • Python 鼠标轨迹 - 防止游戏检测
  • 我们来学人工智能 -- 将Ollama已下载的模型从C盘迁出
  • python实现情绪识别模块,并将模块封装成可执行文件
  • 1.2 变革里程碑:Transformer 的崛起
  • 云上考场微信小程序的设计与实现(LW+源码+讲解)
  • C# Winform怎么设计串口,客户端和相机控件界面显示
  • openAI官方prompt技巧(二)
  • 基于springboot+vue的文物管理系统的设计与实现
  • android手机安装deepseek-r1:1.5b
  • DeepSeek开源多模态大模型Janus-Pro部署
  • 在 Linux 系统下,解压 `.tar.gz`
  • 14vue3实战-----获取用户信息和用户的菜单树信息
  • 解决Redisson在Kubernetes中连接旧Redis主节点的问题
  • Vue3 进阶-自定义事件用法全解析 ✨
  • 大语言模型需要的可观测性数据的关联方式
  • LeetCode热题100-最大子数组和【JavaScript讲解】
  • webpack配置之---output.filename
  • 【DeepSeek】私有化本地部署图文(Win+Mac)
  • Windows编程:在 VS2010 里面,打开一个项目
  • #渗透测试#批量漏洞挖掘#WookTeam searchinfo SQL注入漏洞
  • Vue 3 中的 reactive 和 ref 有什么区别?
  • IDEA关联Tomcat,部署JavaWeb项目
  • kafka服务端之延时操作实现原理
  • NLP论文速读(ICLR 2025)|在实时机器翻译中对齐人类偏好
  • 基于spring boot的餐厅点餐管理系统设计与实现(LW+源码+讲解)
  • 设计模式