Home Menu

Menu



Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android


 
Herramientas
  #1  
Viejo 06/10/11, 09:37:53
Avatar de n3ok
n3ok n3ok no está en línea
Usuario novato en la web
Mensajes: 9
 
Fecha de registro: oct 2011
Localización: Tarragona
Mensajes: 9
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Exclamation Consumir recurso web des de ANDROID

Hola, muy buenas!

Soy nuevo en esto de las aplicaciones Android, y estoy haciendo una que requiere consultar a un servicio web que yo he creado.

El servicio web funciona porqué lo he probado solo y va bién.

El servicio web es este:

Código:
 [WebMethod]
        public Boolean ComprovarUsuari(String correu, string pass) {

            string sel = string.Concat("SELECT nom FROM usuaris WHERE correu='", correu, "'", " AND pass='", pass, "'");

            da = new SqlDataAdapter(sel, "Data Source=NombreMiOrdenador;Initial Catalog=baseDatos;Integrated Security=SSPI;");
            DataSet ds = new DataSet();
            try
            {
                da.Fill(ds);
            }
            catch (Exception ex)
            {
                throw ex;
            }

            if (ds.Tables[0].Rows.Count < 1)
            {
                return false;
            }
            else
            {
                return true;
            }
        }

Posiblemente no este optimizada ya que es la primera que hago, si alguien quiere aportar ideas se lo agradezco.
El codigo que he encontrado en algun tutorial de android es el siguiente:

Código:
        private static final String namespace = "http://localhost/WebService";
	private static final String url = "http://localhost:52711/Service1.asmx"; 
	private static final String Metodo = "ComprovarUsuari"; 
	private static final String accionSoap = "http://localhost:52711/Service1.asmx?op=ComprovarUsuari"; 




	public void onClick(View v) {
		Button button = (Button) v;
		if (button.getId() == R.id.regButton) 
		{
			Intent intent = new Intent(this, Reg.class);
			startActivity(intent);
		}
		else if (button.getId() == R.id.loginButton) {
			//Codi a executar per comprovar usuari
			SoapObject Solicitud = new SoapObject(namespace, Metodo);
			
			//paràmetres
			PropertyInfo correu = new PropertyInfo (); 
			PropertyInfo pass = new PropertyInfo ();
			
			//Valors dels paràmetres
			correu.setName ("correu"); 			
			correu.setValue (R.id.userText); 
			pass.setName ("pass"); 	
			pass.setValue (R.id.passText);
			
			Solicitud.addProperty (correu); 
			Solicitud.addProperty (pass);
			
			SoapSerializationEnvelope Envoltorio = new SoapSerializationEnvelope (SoapEnvelope.VER12);
			//Si el servei web es .NET
			Envoltorio.dotNet = true;
			
			Envoltorio.setOutputSoapObject (Solicitud);
			
			HttpTransportSE TransporteHttp = new HttpTransportSE(url);
			
			
			try {
				TransporteHttp.call (accionSoap, Envoltorio);  En esta línea me falla, y me salta a la IOException.
			} catch (IOException e) {
				e.printStackTrace();
			} catch (XmlPullParserException e) {
				e.printStackTrace();
			}
			
			String resposta = "prova";
			try {
				resposta = (String) Envoltorio.getResponse();
			} catch (SoapFault e) {
				e.printStackTrace();
			}
			
			Toast.makeText(this, resposta, Toast.LENGTH_SHORT).show();
		}
A ver si alguien me ilumina el camino!

Gracias de antemano
Responder Con Cita


  #2  
Viejo 06/10/11, 14:02:06
Avatar de RubenGM85
RubenGM85 RubenGM85 no está en línea
Miembro del foro
Mensajes: 435
 
Fecha de registro: mar 2010
Localización: Girona
Mensajes: 435
Modelo de smartphone: LG Nexus 5
Versión de ROM: Stock
Tu operador: Vodafone
Mencionado: 5 comentarios
Tagged: 0 hilos
Piensa que si vas a sacar la app al público, cualquiera la puede decompilar y ver la conexión que haces con la base de datos (usuario y contraseña incluidos).

Deberías hacer un script php o similar que haga de intermediario.
Responder Con Cita
  #3  
Viejo 07/10/11, 04:20:07
Avatar de maxenz
maxenz maxenz no está en línea
Usuario novato en la web
Mensajes: 9
 
Fecha de registro: oct 2011
Mensajes: 9
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Mira yo desarrolle una aplicacion que consume un web service que anda de 10 .. te paso el codigo que use yo :


Código:
private static final String accionSoap = "http://tempuri.org/NombreMetodo";
     private static final String Metodo = "NombreMetodo";
     private static final String namespace = "http://tempuri.org";
     private static final String url = "url donde esta tu webservice";  
    
    String resultadoFINAL;
     
   
     
   
     
    
    

     public void onCreate(Bundle savedInstanceState) {
    	  super.onCreate(savedInstanceState);
    	  setContentView(R.layout.main);
    	  
    	 
    	  
    	
         
         
    	
    	  
    	  try {
    	   
    	   //Modelo el request
    	   SoapObject request = new SoapObject(namespace, Metodo);

    	   //Modelo el Sobre
    	   SoapSerializationEnvelope sobre = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    	   sobre.dotNet = true;
    	   sobre.setOutputSoapObject(request);

    	   //Modelo el transporte
    	   HttpTransportSE transporte = new HttpTransportSE(url);

    	   //Llamada
    	   transporte.call(accionSoap, sobre);

    	   //Resultado
    	   SoapPrimitive resultado = (SoapPrimitive) sobre.getResponse();
       
          resultadoFINAL = resultado.toString();



}


catch (Exception e)

{
e.getMessage();
}
en resultadoFINAL tendrias que tener el STRING que te trae como resultado tu web service

obviamente para hacer esto tenes que incluir en tu proyecto la libreria KSOAP2

Última edición por maxenz Día 07/10/11 a las 04:22:09
Responder Con Cita
  #4  
Viejo 07/10/11, 09:22:57
Avatar de n3ok
n3ok n3ok no está en línea
Usuario novato en la web
Mensajes: 9
 
Fecha de registro: oct 2011
Localización: Tarragona
Mensajes: 9
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Ok, lo voy a probar i os comento que tal! Gracias!
Responder Con Cita
  #5  
Viejo 07/10/11, 09:26:04
Avatar de n3ok
n3ok n3ok no está en línea
Usuario novato en la web
Mensajes: 9
 
Fecha de registro: oct 2011
Localización: Tarragona
Mensajes: 9
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Cita:
Originalmente Escrito por RubenGM85 Ver Mensaje
Piensa que si vas a sacar la app al público, cualquiera la puede decompilar y ver la conexión que haces con la base de datos (usuario y contraseña incluidos).

Deberías hacer un script php o similar que haga de intermediario.
Conoces alguna web que indique como hacerlo?
Responder Con Cita
  #6  
Viejo 07/10/11, 09:28:41
Avatar de RubenGM85
RubenGM85 RubenGM85 no está en línea
Miembro del foro
Mensajes: 435
 
Fecha de registro: mar 2010
Localización: Girona
Mensajes: 435
Modelo de smartphone: LG Nexus 5
Versión de ROM: Stock
Tu operador: Vodafone
Mencionado: 5 comentarios
Tagged: 0 hilos
Así en general, unos pocos enlaces:

http://www.josecgomez.com/2010/04/30...es-using-json
http://www.slideshare.net/sullis/con...ces-on-android
http://stackoverflow.com/questions/2...e-with-android
Responder Con Cita
  #7  
Viejo 07/10/11, 09:34:14
Avatar de n3ok
n3ok n3ok no está en línea
Usuario novato en la web
Mensajes: 9
 
Fecha de registro: oct 2011
Localización: Tarragona
Mensajes: 9
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Ostras! Gracias por los enlaces, voy a ver y os comento!
Responder Con Cita
  #8  
Viejo 07/10/11, 11:14:55
Avatar de n3ok
n3ok n3ok no está en línea
Usuario novato en la web
Mensajes: 9
 
Fecha de registro: oct 2011
Localización: Tarragona
Mensajes: 9
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
En el campo URL, si estoy trabajando en mi maquina local a través del IIS, que debo poner? he probado con mi ip y con localhost pero nada..
Responder Con Cita
  #9  
Viejo 07/10/11, 11:19:10
Avatar de RubenGM85
RubenGM85 RubenGM85 no está en línea
Miembro del foro
Mensajes: 435
 
Fecha de registro: mar 2010
Localización: Girona
Mensajes: 435
Modelo de smartphone: LG Nexus 5
Versión de ROM: Stock
Tu operador: Vodafone
Mencionado: 5 comentarios
Tagged: 0 hilos
La IP privada del PC que está corriendo el IIS (192.168... o 172.1...) si estás en wifi. Si estás en 3G, tendrás que abrir los puertos del router y apuntar a tu IP pública.
Responder Con Cita
  #10  
Viejo 07/10/11, 11:38:11
Avatar de n3ok
n3ok n3ok no está en línea
Usuario novato en la web
Mensajes: 9
 
Fecha de registro: oct 2011
Localización: Tarragona
Mensajes: 9
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Cita:
Originalmente Escrito por RubenGM85 Ver Mensaje
La IP privada del PC que está corriendo el IIS (192.168... o 172.1...) si estás en wifi. Si estás en 3G, tendrás que abrir los puertos del router y apuntar a tu IP pública.
Le pongo mi privada tal qual:
http://192.168.1.36/WebService1/Service1.asmx

i me lanza esta excepción:
Sin título.png
Responder Con Cita
  #11  
Viejo 07/10/11, 11:42:54
Avatar de RubenGM85
RubenGM85 RubenGM85 no está en línea
Miembro del foro
Mensajes: 435
 
Fecha de registro: mar 2010
Localización: Girona
Mensajes: 435
Modelo de smartphone: LG Nexus 5
Versión de ROM: Stock
Tu operador: Vodafone
Mencionado: 5 comentarios
Tagged: 0 hilos
¿Has mirado lo que te devuelve si entras desde el navegador?
Responder Con Cita
  #12  
Viejo 07/10/11, 11:47:15
Avatar de n3ok
n3ok n3ok no está en línea
Usuario novato en la web
Mensajes: 9
 
Fecha de registro: oct 2011
Localización: Tarragona
Mensajes: 9
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Cita:
Originalmente Escrito por RubenGM85 Ver Mensaje
¿Has mirado lo que te devuelve si entras desde el navegador?
Des del navegador solo me funciona si pongo la direccion asi:
http://localhost:61557/Service1.asmx

i me dice que rechaza la conexion:
Sin título.png


Por cierto, gracias por tu tiempo.


PD: Debugando, veo que salta a la excepción a la línea
Código:
 transporte.call(accionSoap, sobre);
PD2: Leiendo he visto que poner localhost es una tonteria pq entonces se refiere al emulador del telefono. Pongo la ip del PC tal que así: http://192.168.1.36:61557/Service1.asmx i al navegador me dice que no esta disponible, i la aplicacion me suelta que "Transport endpoint is not connected".

Última edición por n3ok Día 07/10/11 a las 12:03:47
Responder Con Cita
  #13  
Viejo 07/10/11, 12:20:13
Avatar de RubenGM85
RubenGM85 RubenGM85 no está en línea
Miembro del foro
Mensajes: 435
 
Fecha de registro: mar 2010
Localización: Girona
Mensajes: 435
Modelo de smartphone: LG Nexus 5
Versión de ROM: Stock
Tu operador: Vodafone
Mencionado: 5 comentarios
Tagged: 0 hilos
Ah, coñe. Pensaba que estabas en un móvil real... Échale un vistazo a esto, entonces: http://umakantpatil.com/posts/androi...les-on-windows
Responder Con Cita
  #14  
Viejo 07/10/11, 12:50:49
Avatar de n3ok
n3ok n3ok no está en línea
Usuario novato en la web
Mensajes: 9
 
Fecha de registro: oct 2011
Localización: Tarragona
Mensajes: 9
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Cita:
Originalmente Escrito por RubenGM85 Ver Mensaje
Ah, coñe. Pensaba que estabas en un móvil real... Échale un vistazo a esto, entonces: http://umakantpatil.com/posts/androi...les-on-windows
Finalmente me funciona con el HelloWorld!

Voy a seguir provando con lo que quería. Gracias por todo!
Responder Con Cita
Respuesta

Estás aquí
Regresar   HTCMania > Todo sobre Android > Programación y Desarrollo para Android


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 00:04:15 (GMT +2)

Cookies
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007