本文內容:
- 概述
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