Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
364 views
in Technique[技术] by (71.8m points)

httpurlconnection - HttpEntity is deprecated on Android now, what's the alternative?

With the release of Android 5.1, it looks like all the Apache http stuff has been deprecated. Looking at the documentation is useless; they all say

This class was deprecated in API level 22. Please use openConnection() instead. Please visit this webpage for further details.

Which is fine the first time you read it, but when EVERY class that was deprecated says that, it's not that helpful.

Anyway, what are the alternatives for classes like HttpEntity, specifically StringEntity, and MultipartEntity? I substituted BasicNameValuePair for my own implementation of Android's Pair<T, S> class, and it looks like URLEncoder.encode is a good substitute for URLEncodedUtils, but I'm not sure what to do about HttpEntity.

EDIT

I've decided just to re-write the networking stuff. Gonna try to use Retrofit and OkHttp

EDIT

Seriously take a look at switching your calls and stuff to Retrofit. Pretty nifty. I'm glad I did. There were a few hurdles, but it's cool.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You can always import the last Apache Http client and use that. Also, you might want to take a look at a networking library like Volley or Retrofit, just in case you can use that instead. If starting a new project, using a networking library is recommended because there is no need to reinvent the wheel. But if you are stuck with using HttpClient, then read on.

EDIT: Latest news on Apache HttpClient (as of 11/07/2015)

Google Android 1.0 was released with a pre-BETA snapshot of Apache HttpClient. To coincide with the first Android release Apache HttpClient 4.0 APIs had to be frozen prematurely, while many of interfaces and internal structures were still not fully worked out. As Apache HttpClient 4.0 was maturing the project was expecting Google to incorporate the latest code improvements into their code tree. Unfortunately it did not happen. Version of Apache HttpClient shipped with Android has effectively become a fork. Eventually Google decided to discontinue further development of their fork while refusing to upgrade to the stock version of Apache HttpClient citing compatibility concerns as a reason for such decision. As a result those Android developers who would like to continue using Apache HttpClient APIs on Android cannot take advantage of newer features, performance improvements and bug fixes. Apache HttpClient 4.3 port for Android was intended to remedy the situation by providing official releases compatible with Google Android. Given that as of Android API 23 Google's fork of HttpClient has been removed this project has been discontinued.

However, there is an official Android port of the Apache HttpClient v4.3

Android API 22 and older should use the Apache HttpClient v4.3

dependencies {
         compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5.1' 
}

Android API 23 and newer should use Apache HttpClient packages for Android maintained by Marek Sebera

dependencies {
     compile group: 'cz.msebera.android' , name: 'httpclient', version: '4.4.1.1' 
}

Info taken from Apache.org


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...