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

Respuesta
 
Herramientas
  #1  
Viejo 06/10/11, 09:37:53
Array

[xs_avatar]
n3ok n3ok no está en línea
Usuario novato en la web
 
Fecha de registro: oct 2011
Localización: Tarragona
Mensajes: 9
Tu operador: Movistar

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
Array

[xs_avatar]
RubenGM85 RubenGM85 no está en línea
Miembro del foro
 
Fecha de registro: mar 2010
Localización: Girona
Mensajes: 435
Modelo de smartphone: LG Nexus 5
Tu operador: Vodafone
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
Array

[xs_avatar]
maxenz maxenz no está en línea
Usuario novato en la web
 
Fecha de registro: oct 2011
Mensajes: 9
Tu operador: Movistar

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
Array

[xs_avatar]
n3ok n3ok no está en línea
Usuario novato en la web
 
Fecha de registro: oct 2011
Localización: Tarragona
Mensajes: 9
Tu operador: Movistar

Ok, lo voy a probar i os comento que tal! Gracias!
Responder Con Cita
  #5  
Viejo 07/10/11, 09:26:04
Array

[xs_avatar]
n3ok n3ok no está en línea
Usuario novato en la web
 
Fecha de registro: oct 2011
Localización: Tarragona
Mensajes: 9
Tu operador: Movistar

 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
Array

[xs_avatar]
RubenGM85 RubenGM85 no está en línea
Miembro del foro
 
Fecha de registro: mar 2010
Localización: Girona
Mensajes: 435
Modelo de smartphone: LG Nexus 5
Tu operador: Vodafone
Responder Con Cita
  #7  
Viejo 07/10/11, 09:34:14
Array

[xs_avatar]
n3ok n3ok no está en línea
Usuario novato en la web
 
Fecha de registro: oct 2011
Localización: Tarragona
Mensajes: 9
Tu operador: Movistar

Ostras! Gracias por los enlaces, voy a ver y os comento!
Responder Con Cita
  #8  
Viejo 07/10/11, 11:14:55
Array

[xs_avatar]
n3ok n3ok no está en línea
Usuario novato en la web
 
Fecha de registro: oct 2011
Localización: Tarragona
Mensajes: 9
Tu operador: Movistar

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
Array

[xs_avatar]
RubenGM85 RubenGM85 no está en línea
Miembro del foro
 
Fecha de registro: mar 2010
Localización: Girona
Mensajes: 435
Modelo de smartphone: LG Nexus 5
Tu operador: Vodafone
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
Array

[xs_avatar]
n3ok n3ok no está en línea
Usuario novato en la web
 
Fecha de registro: oct 2011
Localización: Tarragona
Mensajes: 9
Tu operador: Movistar

 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
Array

[xs_avatar]
RubenGM85 RubenGM85 no está en línea
Miembro del foro
 
Fecha de registro: mar 2010
Localización: Girona
Mensajes: 435
Modelo de smartphone: LG Nexus 5
Tu operador: Vodafone
¿Has mirado lo que te devuelve si entras desde el navegador?
Responder Con Cita
  #12  
Viejo 07/10/11, 11:47:15
Array

[xs_avatar]
n3ok n3ok no está en línea
Usuario novato en la web
 
Fecha de registro: oct 2011
Localización: Tarragona
Mensajes: 9
Tu operador: Movistar

 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
Array

[xs_avatar]
RubenGM85 RubenGM85 no está en línea
Miembro del foro
 
Fecha de registro: mar 2010
Localización: Girona
Mensajes: 435
Modelo de smartphone: LG Nexus 5
Tu operador: Vodafone
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
Array

[xs_avatar]
n3ok n3ok no está en línea
Usuario novato en la web
 
Fecha de registro: oct 2011
Localización: Tarragona
Mensajes: 9
Tu operador: Movistar

 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   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 12:56:05 (GMT +1)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /