org.apache.http.entity.FileEntity is deprecated in Android 6 (Marshmallow)

后端 未结 3 2145
粉色の甜心
粉色の甜心 2020-11-22 13:46

I\'m upgrading an app to API 23 where org.apache.http is deprecated.

My current (deprecated) code looks like this:

HttpClient httpClient         


        
相关标签:
3条回答
  • 2020-11-22 13:53

    If you change your compileSdkVersion to 21, your app will compile cleanly. That being said, there are reasons why Google is backing away from the built-in HttpClient implementation, so you probably should pursue some other library. That "some other library" could be:

    • the built-in classic Java HttpUrlConnection, though as you have found, its API leaves something to be desired
    • Apache's independent packaging of HttpClient for Android
    • OkHttp (my recommendation)
    • AndroidAsync

    In particular, OkHttp seems to have a pretty good API for posting a file and posting a multipart form, which should be similar to what your HttpClient code is doing.

    0 讨论(0)
  • 2020-11-22 14:04

    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.

    Those users who want to continue using Apache HttpClient on Android are advised to consider

    Apache HttpClient 4.3 port for Android when targeting Android API 22 and older

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

    Apache HttpClient packages for Android maintained by Marek Sebera when targeting Android API 23 and newer

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

    taken from Apache Official Website : Apache HttpClient for Android

    NOTE: You do not have to use useLibrary 'org.apache.http.legacy' statement, which was introduced for projects that didn't migrate from Android provided HttpClient classes. For further explanation.

    0 讨论(0)
  • 2020-11-22 14:15

    The best replacement for HTTPClient is using Volley. It is much easier to use, handles request queues and caches you requests. It is fully compatible with almost all API levels down to API 4.

    See the Android documentation on how to do it.

    0 讨论(0)
提交回复
热议问题