狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

C#使用HttpClient四種請求數據格式:json、表單數據、文件上傳、xml格式

admin
2024年6月8日 18:15 本文熱度 1084

前言

當下編寫應用程序都流行前后端分離,后端提供對應服務接口給前端或跨應用程序調用,如WebAPI等。在調用這些服務接口發送HTTP請求,而.NET為我們提供了HttpWebRequest、HttpClient幾個類庫來實現。下面對C#使用HttpClient類發送HTTP請求數據的幾種格式。

HttpClient

HttpClient是.NET 4.5以上版提供的類(System.Net.Http),編寫的應用程序可以通過此類發送HTTP請求并從WEB服務公開的資源接收HTTP響應。HTTP請求包含了請求報文與響應報文。下面先簡單的了解它的一些屬性與方法。
屬性:
屬性描述
BaseAddress獲取或設置發送請求時地址。
DefaultProxy獲取或設置全局HTTP請求代理。
DefaultRequestHeaders獲取請求發送的標題。
DefaultRequestVersion獲取或設置請求使用的默認HTTP版本。
MaxResponseContentBufferSize獲取或設置讀取響應內容時要緩沖的最大字節數。
Timeout獲取或設置請求超時等待的時間。
方法:
方法描述
GetAsync異步請求獲取指定URI。
GetByteArrayAsync異步請求獲取指定URI并以字節數組的形式返回響應。
GetStreamAsync異步請求獲取指定URI并以流的形式返回響應。
GetStringAsync異步請求獲取指定URI并以字符串的形式返回響應正文。
PostAsync異步將POST請求發送給指定URI。
Send發送帶有指定請求的 HTTP 請求。
SendAsync以異步操作發送 HTTP 請求。

數據格式

在向HTTP發起請求時,將以什么樣的數據格式發送數據,這取決于URI服務資源。而常用的類型可分為application/json、application/x-www-form-urlencoded, multipart/form-data, text/xml,其中application/json 是近年來最常用的一種。下面簡單介紹每種格式。

JSON數據格式

application/json 通常是HttpClient發送JSON格式的數據,通過使用HttpContent的StringContent并設置其MediaType為"application/json"。
示例:
using Newtonsoft.Json;using System;using System.Net.Http;using System.Net.Http.Headers;using System.Text;using System.Threading.Tasks;
namespace Fountain.WinConsole.HttpDemo{    internal class Program    {        static async Task Main(string[] args)        {            try            {                using (HttpClient httpClient = new HttpClient())                {                    User user = new User();                    user.username = "test";                    user.password = "123456";                    string jsonData = JsonConvert.SerializeObject(user);                    // 發送請求數據包                    StringContent content = new StringContent(jsonData, Encoding.UTF8);                    // 設置HTTP 響應上的ContentType --application/json                    content.Headers.ContentType = new MediaTypeHeaderValue("application/json");                    // 請求訪問地址                    string url = "https://127.0.0.1/api/user/login";                    // 發出HTTP的Post請求                    HttpResponseMessage response = await httpClient.PostAsync(url, content);                    // 讀取返回結果                    string responseContent = await response.Content.ReadAsStringAsync();                    // 將字符轉對象                    Result result = JsonConvert.DeserializeObject<Result>(responseContent);                }            }            catch (Exception exception)            {                Console.WriteLine(exception.Message);            }            Console.ReadLine();        }    }}

表單數據格式

application/x-www-form-urlencoded 這種格式通常用于表單數據的提交,通過使用HttpContent的FormUrlEncodedContent 類定義實現。
示例:
using Newtonsoft.Json;using Newtonsoft.Json.Linq;using System;using System.Collections;using System.Collections.Generic;using System.Net.Http;using System.Net.Http.Headers;using System.Text;using System.Threading.Tasks;
namespace Fountain.WinConsole.HttpDemo{    internal class Program    {        static async Task Main(string[] args)        {            try            {                using (HttpClient httpClient = new HttpClient())                {                    Dictionary<string,string> user = new Dictionary<string, string>                    {                        { "username", "test" },                        { "password", "123456" }                    };                    // 發送請求數據包                    FormUrlEncodedContent content = new FormUrlEncodedContent(user);                    // 請求訪問地址                    string url = "https://127.0.0.1/api/user/login";                    // 發出HTTP的Post請求                    HttpResponseMessage response = await httpClient.PostAsync(url, content);                    // 讀取返回結果                    string responseContent = await response.Content.ReadAsStringAsync();                    // 將字符轉對象                    Result result = JsonConvert.DeserializeObject<Result>(responseContent);                }            }            catch (Exception exception)            {                Console.WriteLine(exception.Message);            }            Console.ReadLine();        }    }}

文件上傳格式

multipart/form-data 常用于文件上傳的數據格式,通過用MultipartFormDataContent類定義實現。
示例:
using Newtonsoft.Json;using Newtonsoft.Json.Linq;using System;using System.Collections;using System.Collections.Generic;using System.IO;using System.Net.Http;using System.Net.Http.Headers;using System.Text;using System.Threading.Tasks;
namespace Fountain.WinConsole.HttpDemo{    internal class Program    {        static async Task Main(string[] args)        {            try            {                using (HttpClient httpClient = new HttpClient())                {                    MultipartFormDataContent multipartContent = new MultipartFormDataContent();                    multipartContent.Add(new StringContent("user"), "test");                    multipartContent.Add(new ByteArrayContent(File.ReadAllBytes(string.Format("{0}{1}", AppDomain.CurrentDomain.BaseDirectory, "test.jpg"))), "image", "test.jpg");                    // 請求訪問地址                    string url = "https://127.0.0.1/api/user/upload";                    // 發出HTTP的Post請求                    HttpResponseMessage response = await httpClient.PostAsync(url, multipartContent);                    // 讀取返回結果                    string responseContent = await response.Content.ReadAsStringAsync();                    // 將字符轉對象                    Result result = JsonConvert.DeserializeObject<Result>(responseContent);                }            }            catch (Exception exception)            {                Console.WriteLine(exception.Message);            }            Console.ReadLine();        }    }}

XML數據格式

text/xml 主要用于傳輸XML格式的數據,通過使用HttpContent 中的StringContent并設置其MediaType為"text/xml"。
示例:
using Newtonsoft.Json;using Newtonsoft.Json.Linq;using System;using System.Collections;using System.Collections.Generic;using System.IO;using System.Net.Http;using System.Net.Http.Headers;using System.Text;using System.Threading.Tasks;
namespace Fountain.WinConsole.HttpDemo{    internal class Program    {        static async Task Main(string[] args)        {            try            {                using (HttpClient httpClient = new HttpClient())                {                    StringBuilder user = new StringBuilder();                    user.AppendLine("<usrname>test</usrname>");                    user.AppendLine("<password>test123456</password>");                    string xmlData = user.ToString();                    // 發送請求數據包                    StringContent content = new StringContent(xmlData, Encoding.UTF8);                    // 設置HTTP 響應上的ContentType --text/xml                    content.Headers.ContentType = new MediaTypeHeaderValue("text/xml");                    // 請求訪問地址                    string url = "https://127.0.0.1/api/user/login";                    // 發出HTTP的Post請求                    HttpResponseMessage response = await httpClient.PostAsync(url, content);                    // 讀取返回結果                    string responseContent = await response.Content.ReadAsStringAsync();                    // 將字符轉對象                    Result result = JsonConvert.DeserializeObject<Result>(responseContent);                }            }            catch (Exception exception)            {                Console.WriteLine(exception.Message);            }            Console.ReadLine();        }    }}

小結

以上是C#在使用HttpClient類發起 HTTP 的Post請求時,使用四種數據格式的方式。希望對各位有所幫助。如有不到之處,請多多包涵。


該文章在 2024/6/8 18:15:51 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved