Using newer version of HttpClient on Android (like 4.1.x)
2011-08-20 |
|
[EDIT] 2015-10-15: Now apache provides jar for android (currently 4.3.5.1). Also if you are targeting Android API 23 and newer you can use packages for Android maintained by Marek Sebera (currently 4.4.1.1).
[EDIT] This publication and method are old and deprecated. Please use http://code.google.com/p/httpclientandroidlib/ instead.
If you ended up here that is probably because you hit a bug in the built-in HttpClient library which is not just old, it is beta quality (httpclient-4.0-beta1.jar). Strangely enough there is no hope that Android team will update it soon (also this is impossible without breaking backward compatibility…).
Fear not, there is a remedy.
Sadly we cannot replace the build-in library nor just add newer version but we can "trick" the system and move the library in another namespace in order to avoid conflict with the built-in lib.
The quick solution: here is an zip file containing all the required files (JARs converted using "ogrelab-" namespace prefix). Jump directly to step 7 in the "thorough" solution bellow.
The thorough solution:
Steps:
1. Download JarJar -- this is the tool which we will use to move the classes in new namespace
2. Download latest HttpClient, CommonsLogging and Log4j (you will need "binary" packages) and extract them somewhere
3. Create a temporary dir somewhere like tmp_httpclient for example find following Jars and copy them into the temp dir (versions may differ):
- commons-logging-1.1.1.jar
- httpclient-4.1.2.jar
- httpcore-4.1.2.jar
- httpmime-4.1.2.jar
- log4j-1.2.16.jar