.NET WebClient vs HttpClient vs HttpWebRequest vs RestSharp

当我开始习惯通过WSDL——就像我展示了调用web服务在这里在这里——我必须调用RESTful API。如果你不知道我在说什么你喜欢我一个星期前。假设:

  • 一个WSDL API使用SOAP xml编码的数据交换
  • REST API使用HTTP交换json编码的数据

这是一个全新的模式。而不是 GetObject() SetObject()你有一个url的方法api/object可能会收到一个 HTTP GET请求或一个 HTTP POST请求。

的。净框架使用REST api提供了三个不同的类: HttpWebRequest, WebClient,HttpClient。使你的分析瘫痪开源社区创建另一个图书馆 RestSharp。不要害怕,我会减轻你的选择。

一开始有…HttpWebRequest

这是标准的类。净创造者最初开发使用HTTP请求。使用 HttpWebRequest给你控制在请求/响应对象的各个方面,如超时,饼干,头、协议。另一个伟大的事情是HttpWebRequest类不阻塞用户界面线程。举例来说,当你从低迷的API服务器下载一个大文件,应用程序的UI将继续响应。

然而,巨大的力量是强大的复杂性。为了使一个简单的 GET你至少需要五行代码;我们将看到, WebClient只使用两行。

1 HttpWebRequest http = (HttpWebRequest)WebRequest.Create("http://example.com");
2 WebResponse response = http.GetResponse();
3 
4 MemoryStream stream = response.GetResponseStream();
5 StreamReader sr = new StreamReader(stream);
6 string content = sr.ReadToEnd();

方法可以犯错误的数量 HttpWebRequest确实是惊人的。只使用 HttpWebRequest如果您需要它提供的额外的低级控制。

WebClient。简单。

WebClient是一种更高级的抽象之上的 HttpWebRequest简化最常见的任务。使用WebClient可能是慢(在几毫秒)

比使用吗 HttpWebRequest直接。但这“低效”带来巨大的好处:它需要更少的代码,更容易使用,你就不太可能犯错误时使用它。

同样的请求现在一样简单的例子:

1 var client = new WebClient();
2 var text = client.DownloadString("http://example.com/page.html");

注意:使用语句的例子都是为了简便起见,我们省略了。你应该正确处理web请求对象。

别担心,你仍然可以指定超时,只要确保你遵循这个解决方案.

HttpClient,两全其美

HttpClient提供了强大的功能和更好的语法支持新线程功能,例如它支持 await关键字。它还允许线程下载的文件有更好的编译器检查和代码验证。

这个类的优点和特性请百度.

唯一的缺点是它需要。净框架4.5,许多年长的或遗留机器可能没有。

等等,一个新选手出现!

 HttpClient仅仅是可用的。NET 4.5平台社区开发了一个选择。今天, RestSharp是一个便携式的唯一选项之一,多平台,不受妨碍的,完全开源的HTTP客户端,您可以使用您的应用程序。

它结合了的控制 HttpWebRequest简单的 WebClient.

结论

  • HttpWebRequest为控制
  • WebClient为简单起见,简洁
  • RestSharp对于非。NET 4.5环境
  • HttpClient对于+异步功能。NET 4.5环境

 

文章来源有道网页翻译,原网页:http://www.diogonunes.com/blog/webclient-vs-httpclient-vs-httpwebrequest/

posted @ 2018-02-28 16:31  学永不止步  阅读(806)  评论(0)    收藏  举报