android httpurlconnection apache-httpclient-4.x

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



httpurlconnection apache-httpclient-4.x (3)

Con el lanzamiento de Android 5.1, parece que todas las cosas de Apache http han quedado en desuso. Mirar 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 fue desaprobada dice eso, no es tan útil.

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

EDITAR

He decidido simplemente volver a escribir las cosas de redes. Voy a intentar usar Retrofit y OkHttp

EDITAR

Considere seriamente cambiar sus llamadas y otras cosas a Retrofit. Bastante ingenioso Me alegro de haberlo hecho. Hubo algunos obstáculos, pero es genial.


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

org.apache.http.client.HttpClient :

Esta interfaz fue obsoleta en el nivel 22 de la API. Utilice openConnection () en su lugar. Visite esta página web para más detalles.

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

Así es como 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);


Llame al servicio web httpclient replace by httpurlconnection

mi codigo aqui

public static String getDataFromUrl(String url) { String result = null; // System.out.println("URL comes in jsonparser class is: " + url); try { URL myurl=new URL(url); HttpURLConnection urlConnection = (HttpURLConnection) myurl .openConnection(); urlConnection.setRequestMethod("GET"); urlConnection.setDoInput(true); urlConnection.connect(); InputStream is=urlConnection.getInputStream(); if (is != null) { StringBuilder sb = new StringBuilder(); String line; try { BufferedReader reader = new BufferedReader( new InputStreamReader(is)); while ((line = reader.readLine()) != null) { sb.append(line); } reader.close(); } finally { is.close(); } result = sb.toString(); } }catch (Exception e){ result=null; } return result; }


Siempre puede importar el último cliente Apache Http y usarlo. 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 usar una biblioteca de red porque no hay necesidad de reinventar la rueda. Pero si está atascado con el uso de HttpClient , HttpClient leyendo.

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

Google Android 1.0 se lanzó con una instantánea anterior a BETA de Apache HttpClient. Para coincidir con la primera versión de Android, las API de Apache HttpClient 4.0 tuvieron que congelarse prematuramente, mientras que muchas de las interfaces y estructuras internas todavía no se resolvieron por completo. A medida que 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 enviada con Android se ha convertido efectivamente en una bifurcación. Finalmente, Google decidió suspender el desarrollo de su bifurcación mientras se negaba a actualizar a la versión estándar de Apache HttpClient citando preocupaciones de compatibilidad como una razón para tal decisión. Como resultado, los desarrolladores de Android que deseen continuar utilizando las API de Apache HttpClient en Android no pueden aprovechar las nuevas funciones, mejoras de rendimiento y correcciones de errores. 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.

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

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

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

Android API 23 y posteriores deberían 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