Error librerías apache http

publicado por: Anonymous

Buenas a todos, normalmente utilizo estas librerías para realizar peticiones http desde la aplicación android, y las he copiado y pegado de un proyecto anterior donde si funcionaban bien, y al copiarlas en este nuevo proyecto no me las reconoce. ¿están obsoletas?

Quiero realizar una comunicacion cliente-servidor en el que manejo (altas bajas y modificaciones) los objetos de un inventario, por tanto unas veces sera descargar el inventario, y otra modificarlo.

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;

Muchas gracias a todos.

Clase que realiza la peticion http:

class AsignarHoraAsyncTask extends AsyncTask<String, Void, String>
    {
        @Override
        protected String doInBackground(String... urls)
        {
            return POST("http://adb.hol.es/conectar1.php");
        }
        // onPostExecute displays the results of the AsyncTask.

        protected void onPreExecute() {
            super.onPreExecute();
        }
        @Override
        protected void onPostExecute(String result)
        {
            listado();
        }

        public String POST(String url)
        {
            InputStream inputStream = null;
            String result = "";
            try
            {
                HttpClient httpclient = new DefaultHttpClient();
                //make POST request to the given URL
                HttpPost httpPost = new HttpPost(url);
                // pass parameters in this way

                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(4);
                nameValuePairs.add(new BasicNameValuePair("op",op));
                nameValuePairs.add(new BasicNameValuePair("ref",listaBC.get(pulsado).getReferencia()));
                nameValuePairs.add(new BasicNameValuePair("hEnt",hora));
                nameValuePairs.add(new BasicNameValuePair("equipo",equipo));
                Log.i("Asyn", "referencia:"+listaBC.get(pulsado).getReferencia()+"|| op:"+op+"||equipo:"+equipo+"||hR:"+hora);

                //add data
                httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

                // 8. Execute POST request to the given URL
                HttpResponse httpResponse = httpclient.execute(httpPost);

                // 9. receive response as inputStream
                inputStream = httpResponse.getEntity().getContent();

                // 10. convert inputstream to string
                if(inputStream != null)
                {
                    result = convertInputStreamToString(inputStream);

                    Log.i("Asyn", "result: " + result);

                }

                //Si pasa por aquí se va a tomar x el culo mirar!!
                else
                {
                    result = "Did not work!";
                }

            }

            catch (Exception e)
            {
                //Log.d("InputStream", e.getLocalizedMessage());
            }
            return result;
        }
    }

Como en este caso es una operacion de actualizar el inventario recibe del servidor 1 o 2 y por esto no hago nada con la cadena que recibo. Sé que deberia haber un control de la excepcion.

solución

Uno de los cambios en Android 6.0 (API 23) es la eliminación de las clases Apache (Eliminación del cliente HTTP de Apache), por lo tanto han sido marcadas como obsoletas, puedes seguir usando estas clases definiendo el soporte “legacy”:

android {
    useLibrary 'org.apache.http.legacy'
}

o bajar el nivel de tu compileSdkVersion , sin embargo no son soluciones ya que en algún momento debes evitar usar estas clases,

Para establecer una correcta solución es cambiar a HttpURLConnection

En el sitio tenemos varios ejemplos del uso de esta Clase:

https://es.stackoverflow.com/search?q=httpurlconnection

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *