HttpEntity está en desuso en Android ahora, ¿cuál es la alternativa?

Con el lanzamiento de Android 5.1, parece que todo el material Apache http ha quedado obsoleto. Ver la documentación es inútil; todos dicen

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

Lo cual está bien la primera vez que lo lees, pero cuando CADA clase que quedó en desuso dice eso, no es tan útil.

De todos modos, ¿cuáles son las alternativas para clases como HttpEntity , específicamente StringEntity y MultipartEntity ? BasicNameValuePair para mi propia implementación de la clase Pair de Android, y parece que URLEncoder.encode es un buen sustituto de URLEncodedUtils , pero no estoy seguro de qué hacer con HttpEntity .

EDITAR

Decidí simplemente volver a escribir las cosas de la red. Voy a intentar usar Retrofit y OkHttp

EDITAR

En serio eche un vistazo a cambiar sus llamadas y cosas a Retrofit. Bastante ingenioso. Estoy feliz de haberlo hecho Hubo algunos obstáculos, pero es genial.

Siempre puede importar el último cliente Apache Http y usar eso. Además, es posible que desee echar un vistazo a una biblioteca de redes como Volley o Retrofit , en caso de que pueda usar eso en su lugar. Si comienza un nuevo proyecto, se recomienda utilizar una biblioteca de red porque no es necesario reinventar la rueda. Pero si estás atrapado con el uso de HttpClient , entonces HttpClient leyendo.

EDIT: Últimas noticias sobre Apache HttpClient (a partir del 07/11/2015)

Google Android 1.0 fue lanzado con una instantánea pre-BETA de Apache HttpClient. Para coincidir con la primera versión de Android, las API de Apache HttpClient 4.0 tuvieron que ser congeladas prematuramente, mientras que muchas de las interfaces y estructuras internas aún no estaban completamente resueltas. Cuando Apache HttpClient 4.0 estaba madurando, el proyecto esperaba que Google incorporara las últimas mejoras de código en su árbol de códigos. Lamentablemente no sucedió. La versión de Apache HttpClient incluida con Android se ha convertido efectivamente en una bifurcación. Eventualmente, Google decidió suspender el desarrollo de su fork al negarse a actualizar a la versión original de Apache HttpClient citando preocupaciones de compatibilidad como una razón para tal decisión. Como resultado, los desarrolladores de Android que deseen seguir utilizando las API Apache HttpClient en Android no pueden aprovechar las características más nuevas, las mejoras de rendimiento y las correcciones de errores. El puerto Apache HttpClient 4.3 para Android estaba destinado a remediar la situación proporcionando versiones oficiales compatibles con Google Android. Dado que a partir de Android API 23 se ha eliminado el fork de Google de HttpClient, este proyecto ha sido descontinuado.

Sin embargo, hay un puerto oficial de Android Apache HttpClient v4.3

Android API 22 y anteriores deben usar Apache HttpClient v4.3

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

Android API 23 y posteriores deben usar paquetes Apache HttpClient para Android mantenidos por Marek Sebera

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

Información tomada de Apache.org

La documentación de HttpClient lo orienta en la dirección correcta:

org.apache.http.client.HttpClient :

Esta interfaz quedó obsoleta en el nivel de API 22. Utilice en su lugar openConnection (). Por favor visite esta página web para más detalles.

significa que debe cambiar a java.net.URL.openConnection() .

He aquí cómo puedes hacerlo:

 java.net.URL url = new java.net.URL("http://some-server"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST"); // read the response System.out.println("Response Code: " + conn.getResponseCode()); InputStream in = new BufferedInputStream(conn.getInputStream()); String response = org.apache.commons.io.IOUtils.toString(in, "UTF-8"); System.out.println(response);