zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    什么是桌面虚拟化,实施桌面虚拟化有什么好处?[转]
    运维工程师的职责和前景
    informix 中chunk/dbspace概念
    让用户体验决定桌面虚拟化成败
    专访运维与人才外包专家黄琨:运维工作最大的挑战是什么?
    PD与DBMS中的数据类型
    informix长事务的处理方式
    Oracle expdp/impdp导出导入命令及数据库备份(转)
    wpf的treeview显示item时候不能stretch的一个解决办法
    Jenkins 用户权限管理
  • 原文地址:https://www.cnblogs.com/gegecode/p/15131829.html
Copyright © 2011-2022 走看看