- Consumir un servicio web del ordenador local desde Windows Mobile
-
Muchos compañeros me han preguntado varias veces esta cuestión
aparentemente sencilla, pero que a mí en su momento también me
entretuvo bastante y por si a alguna otra persona le puede ayudar, lo
quería dejar definitivamente escrito.
El situación es la
siguiente. Vamos a realizar una aplicación para nuestro dispositivo
móvil, la cual va a consumir un servicio web que estará corriendo, en
un principio durante el testeo, en nuestro ordenador de desarrollo y al
cual está conectado nuestra PDA o Smartphone.
Cuando agregamos
la referencia web en nuestro proyecto de Visual Studio de Smart Device,
la cual apunta al otro proyecto de Web Service en la misma solución,
tenemos una referencia local tal que:
http://localhost:49217/WebServiceName/Service.asmx
Al
ejecutar esto en el dispositivo móvil, él entiende que localhost es él,
y que ahí no está corriendo el servicio que le indicamos, por lo que se
producirá un error. Por tanto, una vez que nos damos cuenta de ello, el
siguiente paso que habitualmente se nos ocurre, y que es lo más
natural, es cambiar en la ventana de propiedades que antes mostrábamos
la Web Reference URL, e indicarle una IP de alguna interfaz de red de
nuestro ordenador, por ejemplo:
No obstante, al hacerlo desde la ventana de propiedades lo más que obtenemos es lo siguiente:
¿Y ahora qué? Ahora viene una posible solución. En lugar de establecer
esta última IP en la ventana de propieades de forma visual, nos iremos
al fichero Reference.cs que se encuentra en el siguiente directorio:
.....\NuestroSmartDeviceProject\Web References\WebServiceName\Reference.cs
Y en el constructor de la clase contenida Service, veremos que se inicializar una propiedad llamada URL. Ésta asignación es la que debemos cambiar, y sustituir localhost por la IP deseada:
Esta tarea es la que se supone que tendría que hacer VS cuando modificamos la URL desde la ventana de propiedades.
- Conexión a internet desde el emulador del Pocket PC Windows Mobile 2005
-
Necesitaba salir a internet desde el emulador de Windows Mobile 2005 (WM05) y encontré algunos post que contaban como hacerlo, tales como:
http://blogs.msdn.com/akhune/archive/2005/11/16/493329.aspx
http://nino.net/blogs/nino/archive/2006/01/20/WM5EmulatorInternetConnectivityWithoutActiveSync.aspx
Sin embargo, mi amiga Anare me contó una forma más sencilla, rápida y seguro que os funciona.
Suponemos que ya teneis instalada la SDK de Windows Mobile Pocket PC 2005 (no lo he probado para SmartPhone, pero supongo que también valdría, probadlo y me contais).
1) Partiendo de la configuración por defecto de Visual Studio 2005, vamos a Menu->Tool->Device Manager
2) Seleccionamos de la lista el primer emulador de WM05, pulsamos botón derecho y conectamos
3) Mientras que conecta muestro emulador, nos vamos al Active Sync (mi versión actual es la 4.2) y configuramos los siguiente:
File->ConnectionString->Allow connections to one of the followings : DMA
Pulsamos OK.
4) Volvemos al Divice Manager y pulsamos sobre el mismo emulador que previamente hemos conectado, pulsamos botón derecho y elegimos la opción Cradle ( "Conectar a base" in Spanish )
Desde este momento deberíais tener conexión a internet. Si no fuera así, volved al ActiveSyc y conectar con el dispositivo siguiendo el asistente (File -> Connect Mobile Device ).
Un saludo!