Using newer version of HttpClient on Android (like 4.1.x)
Posted / Публикувана 2011-08-20 in category / в категория: Android
[EDIT] 2015-10-15: Now apache provides jar for android (currently 188.8.131.52). Also if you are targeting Android API 23 and newer you can use packages for Android maintained by Marek Sebera (currently 184.108.40.206).
[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:
1. Download JarJar -- this is the tool which we will use to move the classes in new namespace
3. Create a temporary dir somewhere like tmp_httpclient for example find following Jars and copy them into the temp dir (versions may differ):
java -jar jarjar-1.1.jar process rules.txt LIBNAME.jar ogrelab-LIBNAME.jar
lib/directory of your android project (you may need to create it first)
- select your project
- right button -> Properties OR from the main menu Project -> Properties
- in the left pane select Java Build Path
- in the right pane select Libraries tab and use the "Add JARs…" button to add the jars from the
- go to Order and Export tab and move the new jars to be on top, i.e. above Android API
src/directory of your project.
You are done. Be careful not to mix imports from the built-in and the new version.
Happy Http-ing :-)