.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/
浙公网安备 33010602011771号