This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
This is quite a common 'structure' you'll see in public APIs (so is something useful to recognize for future)!
HttpClient is the Interface - So you would not use this directly, but you would use an implementation of that interface (or build your own implementation)
AbstractHttpClient is an implementation of HttpClient - It contains some default functionality and extension points that Apache thinks almost all implementers of HttpClient would use - So you would probably not use this directly, you'd want to use a class that extends from this one (someone else's or your own).
DefaultHttpClient is a 'default' implementation - It extends from the basic functionality and extension points that AbstractHttpClient provides and is meant to be used by people who just want an 'out of the box' solution, which a high percentage of people do. This is almost certainly the class you want to use, unless you have some unusual requirements it'll almost certainly do the trick.
Remember to 'code to the interface' though!
HttpClient httpClient = new DefaultHttpClient(...);
as opposed to:
DefaultHttpClient httpClient = new DefaultHttpClient(...);
Hope that helps!
I’ve looked at a lot of different solutions, and in my humble opinion Aspose is the way to go. Here’s the link: http://aspose.com