C#中HttpClient的几种数据格式

在C#中,HttpClient 类是一个非常强大的工具,用于在应用程序中发送HTTP请求和接收HTTP响应。它支持多种数据格式,这些格式主要通过请求的Content属性和响应的Content属性来处理。下面是一些HttpClient支持的主要数据格式及其处理方式:

1、文本(如JSON, XML, 纯文本)

  1. 发送:使用StringContentMultipartFormDataContent(如果发送表单数据)或HttpContent的子类(如PushStreamContent)包装文本数据。
  2. 示例:发送JSON数据,可以使用StringContent,并通过设置Content-Typeapplication/json来指示内容类型。

var json = JsonConvert.SerializeObject(yourObject);  
var content = new StringContent(json, Encoding.UTF8, "application/json");  
var response = await httpClient.PostAsync("http://example.com/api/resource", content);

2、表单数据

  • 发送:使用MultipartFormDataContentFormUrlEncodedContentMultipartFormDataContent适用于文件上传等复杂场景,而FormUrlEncodedContent适用于简单的键值对数据。

  • 示例:发送表单数据。


var content = new FormUrlEncodedContent(new[]  
{  
    new KeyValuePair<string, string>("key1", "value1"),  
    new KeyValuePair<string, string>("key2", "value2")  
});  

var response = await httpClient.PostAsync("http://example.com/api/resource", content);

3、二进制数据(如文件)

  • 发送:通常使用ByteArrayContentStreamContent包装二进制数据。对于文件上传,MultipartFormDataContent也是常用的选择,因为它允许你将文件与表单数据一起发送。

  • 示例:发送文件。

var fileContent = new ByteArrayContent(File.ReadAllBytes("path_to_file"));  
fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data")  
{  
    Name = "\"file\"",  
    FileName = "\"filename.txt\""  
};  
fileContent.Headers.ContentType = MediaTypeHeaderValue.Parse("text/plain");  

var content = new MultipartFormDataContent();  
content.Add(fileContent, "file", "filename.txt");  

var response = await httpClient.PostAsync("http://example.com/api/upload", content);

4、接收响应

文本:使用ReadAsStringAsync方法将响应体读取为字符串。

二进制:使用ReadAsByteArrayAsync方法将响应体读取为字节数组,或者使用ReadAsStreamAsync获取响应的流,以便进一步处理(如保存到文件)。

自动反序列化:对于JSON等格式的响应,可以使用如JsonConvert.DeserializeObject<T>(来自Newtonsoft.Json或System.Text.Json)的方法将响应字符串反序列化为C#对象。

每种数据格式的选择取决于你的具体需求,包括你需要发送的数据类型、接收数据的客户端或服务器的期望格式等。HttpClient通过其灵活的API支持多种数据格式,使得在C#应用程序中发送和接收HTTP请求变得简单而强大。

原文链接:C#中HttpClient的几种数据格式

  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值