Designing Evolvable Web APIs with ASP.NET
by Glenn Block, Pablo Cibraro, Pedro Felix, Howard Dierking, Darrel Miller
Chapter 14. HttpClient
It is always easier to get a good result with good tools.
This chapter is a deeper exploration of the HttpClient library that is part of the System.Net.Http library discussed in Chapter 10.
The first incarnation of HttpClient was bundled with the REST Starter Kit (RSK) on CodePlex in early 2009. It introduced a number of concepts such as a request/response pipeline, an abstraction for the HTTP payload that was distinct from the request/response and strongly typed headers. Despite a big chunk of RSK making it into .NET Framework 4.0, HttpClient itself did not. When the Web API project started in 2010, a rewritten version of HttpClient was a core part of the project.
HttpClient Class
Simple things should be simple, and HttpClient tries to adhere to that principle. Consider the following:
varclient=newHttpClient();stringrfc2616Text=awaitclient.GetStringAsync("http://www.ietf.org/rfc/rfc2616.txt");
In this example, a new HttpClient object is instantiated and an HTTP GET request is made, and the content of the response is translated to a .NET string.
This apparently trivial piece of code provides sufficient context for us to discuss a range of issues related to the usage of the HttpClient class.
Lifecycle
Although HttpClient does indirectly implement the IDisposable interface, the recommended usage of HttpClient is not to dispose of it after every request. The HttpClient object is intended to live for as long as your application needs to make HTTP requests. Having ...