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
  • 相关阅读:
    编程基本功训练:流程图画法及练习
    BDB (Berkeley DB)数据库简单介绍(转载)
    FusionCharts简单教程(一)---建立第一个FusionCharts图形
    curl命令具体解释
    Filter及FilterChain的使用具体解释
    在Activity中为什么要用managedQuery()
    String类
    ruby语言仅仅是昙花一现
    android 内部类的优化
    linux类库之log4j-LogBack-slf4j-commons-logging
  • 原文地址:https://www.cnblogs.com/gegecode/p/15131829.html
Copyright © 2011-2022 走看看