C# 发送 HTTP 请求

本文内容:

  • 概述 HTTP 请求
  • 使用 GET 方法发送请求
  • 使用 POST 方法发送请求

1、 概述

HTTP 请求通常是浏览器向服务器发送的,不过 C# 中也可以发送 HTTP 请求,本文讲解使用 C# 发送 HTTP 请求。

我这里使用的控制台(console)应用程序,其他都类似。

2、发送 GET 请求

发送请求使用 HttpClient 类,所以需要引入一下文件:

using System.Net.Http;

引入之后,初始化一个 HttpClient 类,HttpClient 类有一个 GetStringAsync 方法可以发送 GET 请求,参数为目标地址(URL)。

namespace testdemo
{
    class Program
    {
        private static readonly HttpClient client = new HttpClient();
  
        public  static  void Main()
        {
            Program.get();  
        }

        public static async void get(){
            var responseString = await client.GetStringAsync("http://127.0.0.1:23/api");
            Console.WriteLine(responseString);
        }
    }
  
}

使用抓包工具分析,发送的 HTTP 请求的格式如下:

GET /api HTTP/1.1
Host: 127.0.0.1:23

3、发送 POST 请求

发送 post 请求也大致相似,我们要使用 PostAsync 方法。

using System.Collections.Generic;

namespace testdemo
{
    class Program
    {
        private static readonly HttpClient client = new HttpClient();
  
        public  static  void Main()
        {
            Program.post();
	    Console.Read();
        }

        public static async void post(){
            // 创建一个字典,添加数据
            Dictionary<string, string> values = new Dictionary<string, string>();
            values.Add("name", "hello");
            values.Add("age", "12");

            // 数据转化为 key=val 格式
            var content = new FormUrlEncodedContent(values);

            // 发送请求
            var response = await client.PostAsync("http://127.0.0.1:23", content);
            // 获取数据
            var responseString = await response.Content.ReadAsStringAsync();
            Console.WriteLine(responseString);
        }
    }
  
}

发送的 HTTP 请求的格式如下:

POST / HTTP/1.1
Host: 127.0.0.1:23
Content-Type: application/x-www-form-urlencoded
Content-Length: 17

name=hello&age=12
posted @   抓住那只羊  阅读(9616)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示