studio org including developer java android httpclient httpurlconnection android-6.0-marshmallow

java - org - http apache android



org.apache.http.entity.FileEntity está en desuso en Android 6(Marshmallow) (3)

El puerto Apache HttpClient 4.3 para Android tenía la intención de remediar la situación al proporcionar versiones oficiales compatibles con Google Android.

Dado que a partir de Android API 23, la bifurcación de HttpClient de Google se ha eliminado, este proyecto se ha suspendido.

Se recomienda a aquellos usuarios que quieran continuar usando Apache HttpClient en Android que consideren

Puerto Apache HttpClient 4.3 para Android cuando se dirige a Android API 22 y versiones anteriores

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

Paquetes Apache HttpClient para Android mantenidos por Marek Sebera cuando apuntan a Android API 23 y más reciente

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

tomado del sitio web oficial de Apache : Apache HttpClient para Android

NOTA: No es necesario que use la useLibrary ''org.apache.http.legacy'' , que se introdujo para proyectos que no migraron desde Android, proporcionaron clases HttpClient. Para más explanation .

Estoy actualizando una aplicación a API 23 donde org.apache.http está en desuso.

Mi código actual (en desuso) se ve así:

HttpClient httpClient = new DefaultHttpClient(); File file = new File(attr.Value); String url = server_url; HttpPost request = new HttpPost(url); FileEntity fileEntity = new FileEntity(file, "image/png"); request.setEntity(fileEntity); HttpResponse response = httpClient.execute(request); String output = getContent(response.getEntity().getContent());

He encontrado algunas sugerencias sobre cómo debería hacerse esto usando HttpURLConnection , pero todas son mucho más complejas que la solución actual (que ya no se puede usar). Estoy hablando de muchas líneas de código para ejecutar la misma funcionalidad que la anterior.

Ejemplos son: esta página y esta página

¿Alguien tiene una buena solución sólida más corta para eso?


El mejor reemplazo para HTTPClient es usar Volley. Es mucho más fácil de usar, maneja las colas de solicitud y almacena en caché sus solicitudes. Es totalmente compatible con casi todos los niveles de API hasta API 4.

Consulte la documentación de Android sobre cómo hacerlo.


Si cambia su compileSdkVersion a 21, su aplicación se compilará limpiamente. Dicho esto, hay razones por las que Google está retrocediendo de la implementación integrada de HttpClient, por lo que probablemente debería buscar alguna otra biblioteca. Esa "otra biblioteca" podría ser:

En particular, OkHttp parece tener una API bastante buena para github.com/square/okhttp/wiki/Recipes#posting-a-file y github.com/square/okhttp/wiki/… , que debería ser similar a lo que está haciendo su código HttpClient.