c# 的网络请求相关类

c# 的请求类主要包括 HttpWebRequest;WebClient;HttpClient,RestSharp,其中 RestSharp是社区的网络请求方案,这里主要是讨论各自的特定

HttpWebRequest

这个类是 .net 比较早 出的网络请求类,可以自己控制 超时时间,cookie等比较常用的,对http协议进行了完整的封装,对协议中的header,content等做了属性或者方法的支持
优点:功能强大,支持的.net版本最多 缺点:使用麻烦,需要自己设置各种配置,被官方抛弃了 2333

代码

			HttpWebRequest requst = (HttpWebRequest)WebRequest.Create("https://www.baidu.com");
            requst.Headers.Add("xxx");
            requst.Headers.Add("xxx");
            requst.CookieContainer.Add(new Cookie("xx","xxx"));
            requst.Timeout = 30000;
            var response = requst.GetResponse();

WebClient

这个类是一种更高几倍的抽象,也就是对httpWebRequest的进一步封装,简化了一些步骤
优点:使用简单,下载文件使用方便,相对而已支持net版本也比较多 缺点:功能上有些缺失,没有timeout等的设置,官方不更新功能,只做些修复

	   	 	using (var webClinet = new WebClient())
            {
                webClinet.DownloadFile("address_xxx..","fileName_xxx");
            }

HttpClient

这个是比较后面出的请求类,支持异步模型编程,更适合现代的网络编程,官方主推这个,功能强大,支持单个实例发送请求,连接重复利用,占用资源少。
优点:异步编程模型适合现代的网络请求 缺点:请求速度上还是稍慢,越上层的封装,越是有些损耗,但是总体问题不大,支持的net版本相对比较少,后面主要是net core方向的支持

 			using (var client = new HttpClient())
            {
                var data = client.GetStringAsync("xxxx").Result;
            }

RestSharp

这个社区的贡献,功能也是比较强大 适合rest 风格的编程,api请求友好,以下是官方的 请求案例

优点:适合api的请求风格,非常的灵活,不依赖第三方,支持net版本多 缺点:使用上还是相对比较麻烦,非微软官方维护,依赖社区,遇到问题可能没有相关的文档查询

var client = new RestClient("http://example.com");
// client.Authenticator = new HttpBasicAuthenticator(username, password);

var request = new RestRequest("resource/{id}", Method.POST);
request.AddParameter("name", "value"); // adds to POST or URL querystring based on Method
request.AddUrlSegment("id", "123"); // replaces matching token in request.Resource

// easily add HTTP Headers
request.AddHeader("header", "value");

// add files to upload (works with compatible verbs)
request.AddFile(path);

// execute the request
IRestResponse response = client.Execute(request);
var content = response.Content; // raw content as string

// or automatically deserialize result
// return content type is sniffed but can be explicitly set via RestClient.AddHandler();
RestResponse<Person> response2 = client.Execute<Person>(request);
var name = response2.Data.Name;

// easy async support
client.ExecuteAsync(request, response => {
    Console.WriteLine(response.Content);
});

// async with deserialization
var asyncHandle = client.ExecuteAsync<Person>(request, response => {
    Console.WriteLine(response.Data.Name);
});

// abort the request on demand
asyncHandle.Abort();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值