C#中后台post请求常用的两种方式总结
在C#后台开发中,我们常常需要使用HTTP请求来和其它服务器进行通信。使用POST请求可以在请求体中携带参数,更适合传输大量数据,因此本文将主要介绍C#中后台post请求常用的两种方式:HttpClient和WebRequest。
HttpClient
HttpClient是一个相对简单易用的类库。它的作用是向指定URI地址发送http请求,并获取响应。
示例代码:
using System;
using System.Net.Http;
using System.Threading.Tasks;
namespace MyNamespace {
class MyClass {
static readonly HttpClient client = new HttpClient();
static async Task Main(string[] args) {
var uri = new Uri("https://jsonplaceholder.typicode.com/posts");
var json = "{ 'id': 101, 'title': 'foo', 'body': 'bar', 'userId': 1 }";
var content = new StringContent(json, System.Text.Encoding.UTF8, "application/json");
var response = await client.PostAsync(uri, content);
if (response.IsSuccessStatusCode)
{
var responseContent = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseContent);
}
}
}
}
上述示例代码中,HttpClient实例client会向uri地址发送POST请求。请求体中的json字符串是一个JSON格式的对象,content对象是一个StringContent实例,它将json字符串封装成了HTTP请求的请求体中的内容,同时Content-Type被设置为"application/json"。response对象代表请求的响应,如果响应状态码是200,则读取响应体并输出到控制台。
WebRequest
WebRequest是一个更加底层的类库,它允许我们更加灵活的控制HTTP请求。使用该类库可以更加自由地使用GET、POST等请求方式,并且也可以更加灵活地控制请求头等参数。
示例代码:
using System;
using System.IO;
using System.Net;
using System.Text;
namespace MyNamespace {
class MyClass {
static void Main(string[] args) {
var uri = "https://jsonplaceholder.typicode.com/posts";
var json = "{ 'id': 101, 'title': 'foo', 'body': 'bar', 'userId': 1 }";
WebRequest request = WebRequest.Create(uri);
request.Method = "POST";
request.ContentType = "application/json";
using (var stream = request.GetRequestStream())
{
var buffer = Encoding.UTF8.GetBytes(json);
stream.Write(buffer, 0, buffer.Length);
}
using (var response = request.GetResponse())
{
var responseStream = response.GetResponseStream();
using (var reader = new StreamReader(responseStream))
{
var responseText = reader.ReadToEnd();
Console.WriteLine(responseText);
}
}
}
}
}
上述代码与HttpClient相比更加麻烦一些,同时需要手动指定请求方法和请求头等参数。请求体中的json字符串通过GetRequestStream方法获取的输出流写入。最后获取响应,获取响应流并读取响应体中的内容。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#中后台post请求常用的两种方式总结 - Python技术站