Métodos de HTTP desautorizado advertencia en el estudio de Android
Estoy intentando hacer una petición http con parámetros. Actualmente estoy usando
private List<NameValuePair> mParams = new ArrayList<NameValuePair>(); private DefaultHttpClient mHttpClient; private HttpPost mHttpPost;
éstos para hacer la petición del HTTP y está trabajando muy bien. Pero el problema es el estudio de Android está mostrando advertencia obsoleta para todos estos 3. Intenté usar HttpClientBuilder.create().build();
pero el estudio de androide no puede importar las bibliotecas para HttpClientBuilder
Intenté descargar y agregar esta dependencia del tarro pero todavía no trabajo. Este es mi código
- Android - Soporte 1.6+, y Soporte para Código Desaprobado en 1.5?
- ActivityManager.getRunningTasks es un androide obsoleto
- Problema de ManagedQuery () obsoleto
- Problema de ManagedQuery () obsoleto al obtener los registros de llamadas
- Cómo eliminar el código de Facebook
mHttpClient = new DefaultHttpClient(); mHttpPost = new HttpPost(url); mParams.add(new BasicNameValuePair("key", value)); mHttpPost.setEntity(new UrlEncodedFormEntity(mParams));
Todas estas líneas están mostrando advertencia obsoleta, ¿cuál es el método alternativo para esto?
- El método managedQuery (Uri, String , String, String , String) del tipo Actividad está obsoleto
- El botón setTextAppearance está obsoleto
- Android: Si un elemento está obsoleto en un determinado nivel de API, ¿solo es para ese nivel de API y superior?
- Método descontinuado, pero el método de reemplazo requiere un api más alto
- Reemplazo de código de Facebook obsoleto para Android
- SetTextAppearance obsoleto en el nivel 23 de API
- ¿Es seguro utilizar .getWidth en la pantalla aunque su versión obsoleta
- NameValuePair, HttpParams, HttpConnection Parámetros obsoletos en la clase de solicitud del servidor para la aplicación de inicio de sesión
Puede utilizar HttpsURLConnection
lugar de DefaultHttpClient
. También NameValuePair
está obsoleto, utilice Uri.Builder
y appendQueryParameter
para enviar parámetros de solicitud.
Pruebe el siguiente fragmento de código:
URL url = new URL("http://myurl.com"); HttpsURLConnection connection = (HttpsURLConnection) url.openConnection(); connection.setReadTimeout(10000); connection.setConnectTimeout(15000); connection.setRequestMethod("POST"); connection.setDoInput(true); connection.setDoOutput(true); Uri.Builder builder = new Uri.Builder() .appendQueryParameter("key1", valu1) .appendQueryParameter("key2", value2); String query = builder.build().getEncodedQuery(); OutputStream os = connection.getOutputStream(); BufferedWriter writer = new BufferedWriter( new OutputStreamWriter(os, "UTF-8")); writer.write(query); writer.flush(); writer.close(); os.close(); connection.connect();
La clase DefaultHttpClient está obsoleta en su lugar puede utilizar la clase HttpUrlConnection. HttpUrlConnection hassimple API. La clase NameValuePair puede estar obsoleta en api 22. Puede utilizar ContentValues (android.content.ContentValues) en lugar de NameValuePair.
ContentValues contentValues = new ContentValues(); contentValues.put("Param_name1", Param_value1); contentValues.put("Param_name2", Param_value2);
Estoy usando el cliente de Okhttp para hacer get y postear la llamada. http://square.github.io/okhttp/
Creo que este enlace te ayudará http://developer.android.com/reference/org/apache/http/impl/client/DefaultHttpClient.html
desde este enlace puede descargar el último tarro para httpclient4.5. y use
HttpClient httpClient = HttpClientBuilder.create().build();
IDE solicita advertencia en el nuevo DefaultHttpClient , marca esta clase como obsoleta [obsoleta en Api 22] .
Para resolverlo, utilice HttpClientBuilder :
HttpClient client = HttpClientBuilder.create().build(); HttpGet request = new HttpGet("http://www.google.com"); HttpResponse response = client.execute(request);
HttpClient
está obsoleto desde el level 22
API. Preferir HttpURLConnection
para el nuevo código.
Android incluye dos clientes HTTP: HttpURLConnection y Apache HTTP Client. Ambos soportan HTTPS, descargas y descargas de streaming, tiempos de espera configurables, IPv6
y agrupación de conexiones. El cliente HTTP de Apache tiene menos errores en Android 2.2 (Froyo) y versiones anteriores. Para Android 2.3 (Gingerbread) y más tarde, HttpURLConnection
es la mejor opción. Su sencilla API y su pequeño tamaño hacen que sea ideal para Android. La compresión transparente y el almacenamiento en caché de respuestas reducen el uso de la red, mejoran la velocidad y ahorran batería. Consulte el blog de desarrolladores de Android para obtener una comparación de los dos clientes HTTP.