Ejecutar HTTP POST Request con HttpClient

474 views
Skip to first unread message

Fabrizzio Dagnino

unread,
Nov 12, 2012, 10:32:42 AM11/12/12
to desarrollad...@googlegroups.com
Estimados,

Estoy creando un post para enviar el REGID del dispositivo para poder guardarlos para enviar luego mensajería push (gcm).
El tema es que funciona perfecto en FROYO, se envia a mi base mysql el post.

El tema es que cuando lo prueba con una versión superior como 4.X, Galaxy S2 o S3. No se envía el POST y no puedo guardar el regID.
Actualmente lo hago así, envió 2 variables la cual como mencione mas arriba, guardo sin problemas en versiones como FROYO.

        try {
            HttpClient mClient = new DefaultHttpClient();
            StringBuilder sb = new StringBuilder(
                    "http://190.98.210.200/Desarrollo/push/guardarpush.php");
            HttpPost mpost = new HttpPost(sb.toString());
            List nameValuepairs = new ArrayList(2);

            nameValuepairs.add(new BasicNameValuePair("regId", regId));
            // nameValuepairs.add(new BasicNameValuePair("regapp","demo1"));

            mpost.setEntity(new UrlEncodedFormEntity(nameValuepairs));
            HttpResponse responce = mClient.execute(mpost);
            HttpEntity entity = responce.getEntity();

            BufferedReader buf = new BufferedReader(new InputStreamReader(
                    entity.getContent()));
            StringBuilder sb1 = new StringBuilder();
            String line = null;

            while ((line = buf.readLine()) != null) {
                sb1.append(line + "\r\n");
            }

No entiendo porque en versiones mas altas, no se envía el push si en las otras funciona.
Atento a sus comentarios

--
Saludos!

Fabrizzio Dagnino V.
 Juntos por el medio ambiente, prefiera los medios digitales al papel impreso.


Leonardo Fernandez

unread,
Nov 12, 2012, 10:36:45 AM11/12/12
to desarrollad...@googlegroups.com

Si te fijas en el log y encuentras una excepción de networkIO en el hilo principal deberas realizar ese proceso en un hilo separado...

Send from my Android

--
Para participar es necesario que leas detenidamente las normas del grupo: http://goo.gl/AmNsS
---
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a desarrolladores-a...@googlegroups.com
 
 

Manuel

unread,
Nov 12, 2012, 11:03:09 AM11/12/12
to desarrollad...@googlegroups.com
Esto creo que ya estaba comentado en algun otro hilo, los procesos de red tiene que ir en un hilo aparte del principal.
Mirate la documentacion de AsynTask..

Cristian Garrido

unread,
Nov 12, 2012, 11:18:18 AM11/12/12
to desarrollad...@googlegroups.com
Buenas, ¿se podria hacer un autologin en una portal web mediante el metodo que ocupas?
_________________________________________
Cristian Andrés Garrido Salas.
Estudiante Ing. Civil en Computación e Informática
Universidad Arturo Prat.
Iquique - Chile
(+56) (9) 74531260

"Un sueño no es una ilusión, sino una realidad lejana, pero no inalcanzable..."
_____________________

Por favor considere el medio ambiente antes de imprimir este email

Este email y todos sus adjuntos son confidenciales y para uso exclusivo de la persona o entidad de destino. Si usted no es el destinatario indicado, queda notificado de que la lectura, utilización, divulgación y/o copia sin autorización puede estar prohibida en virtud de la legislación vigente. Si ha recibido este mensaje por error, le rogamos que nos lo comunique inmediatamente por esta misma vía y proceda a su destrucción.


Fabrizzio Dagnino

unread,
Nov 12, 2012, 11:30:34 AM11/12/12
to desarrollad...@googlegroups.com
Esto te puede ser de utilidad,

http://androideity.com/2012/07/05/login-en-android-usando-php-y-mysql/
Saludos!

Fabrizzio Dagnino V.
[cel] +56-8-882 59 46
Thinkconsultores.com

Cristian Garrido

unread,
Nov 12, 2012, 11:52:23 AM11/12/12
to desarrollad...@googlegroups.com
Ok, muchas gracias :D

Fabrizzio Dagnino

unread,
Nov 12, 2012, 2:17:58 PM11/12/12
to desarrollad...@googlegroups.com
Mmm... lo saque del hilo, pero sigo con dramas..
alguien tiene por ahí, algo de documentación?

para poder realizar el guardado del RegID por POST.

Atento a sus comentarios

Leonardo Fernandez

unread,
Nov 12, 2012, 5:58:16 PM11/12/12
to desarrollad...@googlegroups.com

Fabrizzio Dagnino

unread,
Nov 12, 2012, 8:17:06 PM11/12/12
to desarrollad...@googlegroups.com
Buenisima!!

Gracias por las referencias!! me fueron de mucho utilidad!!
Ya logre hacerlo funcionar en froyo y ice cream! =D

Se los agradezco!

Leonardo Fernandez

unread,
Nov 12, 2012, 10:42:12 AM11/12/12
to desarrollad...@googlegroups.com

Esta pagina explica un poco mejor

http://developer.android.com/reference/android/os/NetworkOnMainThreadException.html
Send from my Android

Fabrizzio Dagnino

unread,
Nov 13, 2012, 2:45:01 PM11/13/12
to desarrollad...@googlegroups.com
Lo hice de la siguiente forma:

Cree una clase nueva "PostTask.class"
public class PostTask extends AsyncTask<Void, Void, Void>{

    @Override
    protected Void doInBackground(Void... params) {

        HttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost("http://190.98.210.220/Desarrollo/push.php");
         List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
          nameValuePairs.add(new BasicNameValuePair("Guardar", "LALALALALA"));
           try {
            httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
           } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
           }
           try {
            httpClient.execute(httpPost);
           } catch (ClientProtocolException e) {
            e.printStackTrace();
           } catch (IOException e) {
            e.printStackTrace();
           }
        return null;
    }

    }

luego la llame del Main luego del Oncreate de la siguiente manera

new TestTask().execute();

Funciona sin problemas.... pero el detalle es que tengo el "regId" para gcm en el main, y no tengo como enviarlo a la clase nueva que genere, ya que no logro heredar el valor para poder enviarlo por POST. (pero si pongo un valor por defecto ejemplo "LALALALA" lo envíos sin problemas y lo capturo y lo guardo en la base, pero la idea es guardar el regId.

Me pueden orientar?
[cel] +56-8-882 59 46

Juan de Dios Maldonado Sánchez

unread,
Nov 13, 2012, 2:55:06 PM11/13/12
to desarrollad...@googlegroups.com
En vez de definir el AsyncTask con el <Void, Void, Void> podrías haber especificado el tipo de información que quieres pasar al método doInBackground. Ejemplo: <int, Void, Void> (No recuerdo si poner "int" o Integer")
También puedes pasar esa variable en el constructor de PostTask.


2012/11/13 Fabrizzio Dagnino <fdagn...@gmail.com>

Fabrizzio Dagnino

unread,
Nov 13, 2012, 3:25:48 PM11/13/12
to desarrollad...@googlegroups.com
Si la variable que quiero pasar el el regId para el gcm es un string de mas menos 180 caracteres.

ahora el tema es que antes de que se ejecute esto tendría que pasarle el regId, ya que mi idea es que se envie apenas se abra la aplicación.

Fabrizzio Dagnino

unread,
Nov 13, 2012, 4:02:20 PM11/13/12
to desarrollad...@googlegroups.com
Estimados,

Solucione el problema, guarde la nueva clase dentro del Oncreate del mismo Main y luego de terminar la clase, la ejecute dentro del mismo Oncreate.

Funciono en Froyo, y en Ice Cream  y el Post se envía a mi base Mysql sin problemas.
=D Ahora me falta solo agregar un par de datos, para saber a quien pertenece el RegId.
Reply all
Reply to author
Forward
Message has been deleted
0 new messages