Foros del Web » Programando para Internet » Android »

Consumir servicios php

Estas en el tema de Consumir servicios php en el foro de Android en Foros del Web. ¡Buenas a todos! ¿Alguien me puede ayudar? Necesito que mi app de android se conecte a un archivo PHP(Simplemente hace un select a la tabla ...
  #1 (permalink)  
Antiguo 29/09/2013, 12:26
 
Fecha de Ingreso: septiembre-2012
Mensajes: 17
Antigüedad: 11 años, 7 meses
Puntos: 0
Exclamación Consumir servicios php

¡Buenas a todos! ¿Alguien me puede ayudar? Necesito que mi app de android se conecte a un archivo PHP(Simplemente hace un select a la tabla y muestra su resultado en formato JSON) y una vez conectado al php que la app realice una condicional igualando resultados, por ejemplo:

JSON:

Código:
{"productos":[{"codeqr":"hola","actions":[]}
Condicional:

Código:
if (resultadophp==hola){
//se encontró correctamente 'hola'
}else{
//no se encontró 'hola'
}
Actualmente me conecto al php con esta clase:

Código:
public class QRpost {

public static void postData() {
   // Create a new HttpClient and Post Header
   HttpClient httpclient = new DefaultHttpClient();
   HttpPost httppost = new HttpPost("qr.php");
   try {
       // Execute HTTP Post Request
       HttpResponse response = httpclient.execute(httppost);
       HttpEntity entity = response.getEntity();
       InputStream webs = entity.getContent();
       try{
       	BufferedReader reader = new BufferedReader(new InputStreamReader(webs,"iso-8859-1"),8);
       	webs.close();
       }catch(Exception e){
       	Log.e("log_tag", "Error al convertir el resultado");
       }
   } catch (ClientProtocolException e) {
       // TODO Auto-generated catch block
   } catch (IOException e) {
       // TODO Auto-generated catch block
   }
}
}
¿Alguien puede ayudarme?

Última edición por nrzlftw; 29/09/2013 a las 12:51
  #2 (permalink)  
Antiguo 30/09/2013, 03:16
Avatar de Mahalo  
Fecha de Ingreso: julio-2004
Ubicación: Mallorca (Illes Balears)
Mensajes: 1.121
Antigüedad: 19 años, 9 meses
Puntos: 12
Respuesta: Consumir servicios php

Para comparar cadenas de texto debes usar el método equals.

Por otra parte para conectar con ficheros php y recibir información en json hay una clase llamada JSONObject que te irá de perlas. Para que funcione en todas las versiones de Android debes ejecutarla como tarea asíncrona (AsyncTask).

Saludos!
__________________
Los ignorantes se empeñan en enseñar. Los sabios en aprender.
SourceForge
  #3 (permalink)  
Antiguo 30/09/2013, 06:06
 
Fecha de Ingreso: octubre-2012
Ubicación: Madrid
Mensajes: 67
Antigüedad: 11 años, 6 meses
Puntos: 1
Respuesta: Consumir servicios php

buenas nrzlftw

yo te aconsejaría que para consumir servicios web utilices la librería que google presentó para este fin llamada volley: https://android.googlesource.com/pla...23e8c1d143d5fa

Su uso puede parecer complicado en un principio, pero ni mucho menos. Te dejo un ejemplo por aquí:

vas a tener que crear un método donde hagas lo siguiente:

En la clase en la que hagas la petición al php tendrás que crear un atributo del tipo RequestQueue

Código:
RequestQueue mRequestQueue;
después, en el método principal tendrás que inicializarlo. Además tendrás que hacer la llamada al método nuevo que crearemos para hacer la petición propiamente dicha.

Código:
mRequestQueue = Volley.newRequestQueue(context);
...

...
metodoNuevoParaHacerLaPeticion();
Código:
private metodoNuevoParaHacerLaPeticion()
{
      JsonObjectRequest jr = new JsonObjectRequest(Request.Method.GET, url, null, 
    			new Response.Listener<JSONObject>() 
    			{
    				@Override
    				public void onResponse(JSONObject response) 
    				{
    					//el parseo del json que tengas
                     
    	         
    				}
    			}, 
    			new Response.ErrorListener() 
    			{
    				@Override
    				public void onErrorResponse(VolleyError error)
    				{	
    					//error que quieras mostrar
    				}
    			});

	        mRequestQueue.add(jr);
}
En el código del método nuevo tendrás que poner el parseador, que debería ser algo como esto, más o menos:

Código:
ArrayList<News> productosList = new ArrayList<Producto>();
try
		{
			JSONArray jArray = jObject.getJSONArray("productos");
		
			for (int i = 0; i < jArray.length(); i++) 
			{
				Producto prod = new Producto();
				
				prod.setCode(jArray.getJSONObject(i).getString("codeqr"));
                                prod.setActions(jArray.getJSONArray("actions"));
				
				productosList.add(prod);
			}
		}
		catch (Exception e)
		{
		}
Este código del parseo le he hecho del tirón, así que a lo mejor no está bien, pero es para que te hagas una idea.


Un saludo
  #4 (permalink)  
Antiguo 30/09/2013, 07:09
 
Fecha de Ingreso: septiembre-2012
Mensajes: 17
Antigüedad: 11 años, 7 meses
Puntos: 0
Exclamación Respuesta: Consumir servicios php

Muchas gracias por vuestra respuesta. Necesito terminar esto para mañana y me va a dar algo ya que soy un poco(Bastante)nuevo en el tema de Java y Android

Actualmente tengo esto:

String sym.getData = "hello";
String txt = QRpost.postData();

Código:
if(txt.equals(sym.getData())){ 
     //Todo correcto
    }else{
     //Hubo un error
    }
El código con el que conecto con el archivo PHP:

Código:
    public class QRpost {
	public static String postData() {
		String result = "";
		
	    // Create a new HttpClient and Post Header
	    HttpClient httpclient = new DefaultHttpClient();
	    HttpPost httppost = new HttpPost("http://server/qr.php");
	    try {
	        // Execute HTTP Post Request
	        HttpResponse response = httpclient.execute(httppost);
	        HttpEntity entity = response.getEntity();
	        InputStream webs = entity.getContent();
	        try{
	         BufferedReader reader = new BufferedReader(new InputStreamReader(webs,"iso-8859-1"),8);
	        	//scanText.setText(reader.readLine()); //Read line
	        	StringBuilder builder = new StringBuilder();
	            String line = null;

	            while ((line = reader.readLine()) != null) {

	                builder.append(line);
	            }

	            webs.close();

	            String json = builder.toString();
	            
	        }catch(Exception e){
	        	Log.e("log_tag", "Error to convert result");
	        }
	    } catch (ClientProtocolException e) {
	        // TODO Auto-generated catch block
	    } catch (IOException e) {
	        // TODO Auto-generated catch block
	    }
	    try{
	    	JSONArray jArray = new JSONArray(result);
	    	for(int i=0;i<jArray.length();i++){
	    		JSONObject json_data = jArray.getJSONObject(i);
	    		Log.e("log_tag", json_data.getString("codeqr"));
	    	}
	    }catch(JSONException e){
	    	
	    }
		return result;
	}
     }
¿Me podéis decir si por ahora voy bien?¿Cambiaríais algo?

Etiquetas: app, consumir, json, php, servicios, todo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:02.