Cómo: Llamar a un servicio Web de forma asincrónica
Actualización: noviembre 2007
En este ejemplo se adjunta un controlador a un evento de controlador asincrónico de un servicio web de manera que pueda recuperar el resultado de una llamada a método asincrónica. En este ejemplo se utiliza el servicio Web DemoTemperatureService de http://www.xmethods.net.
Cuando se hace referencia a un servicio web en un proyecto en el entorno de desarrollo integrado (IDE) de Visual Studio, se agrega al objeto My.WebServices y el IDE genera una clase de proxy cliente para tener acceso a un servicio web especificado.
La clase de proxy permite llamar sincrónicamente a los métodos del servicio Web, dónde la aplicación espera a que finalice la función. Además, el servidor proxy crea miembros adicionales como ayuda para llamar al método de forma asincrónica. Para cada función de servicio web, NameOfWebServiceFunction, el proxy crea una subrutina de NameOfWebServiceFunctionAsync, un evento NameOfWebServiceFunctionCompleted y una clase NameOfWebServiceFunctionCompletedEventArgs. En este ejemplo se muestra cómo utilizar los miembros asincrónicos para tener acceso a la función getTemp del servicio Web DemoTemperatureService.
Nota: |
---|
Este código no funciona en aplicaciones Web, porque ASP.NET no admite el objeto My.WebServices. |
Para llamar asincrónicamente a un servicio Web
Haga referencia al servicio Web DemoTemperatureService de http://www.xmethods.net. La dirección es
http://www.xmethods.net/sd/2001/DemoTemperatureService.wsdl
Para obtener más información, vea Cómo: Obtener acceso a un servicio web en código administrado.
Agregue un controlador de eventos para el evento getTempCompleted:
Private Sub getTempCompletedHandler(ByVal sender As Object, _ ByVal e As net.xmethods.www.getTempCompletedEventArgs) MsgBox("Temperature: " & e.Result) End Sub
Nota: No puede utilizar la instrucción Handles para asociar un controlador de eventos a los eventos del objeto My.WebServices.
Agregue un campo para efectuar el seguimiento si el controlador de eventos se ha agregado al evento getTempCompleted:
Private handlerAttached As Boolean = False
Agregue un método para agregar el controlador de eventos al evento getTempCompleted, si es necesario, y para llamar al método getTempAsynch:
Sub CallGetTempAsync(ByVal zipCode As Integer) If Not handlerAttached Then AddHandler _ My.WebServices.TemperatureService.getTempCompleted, _ AddressOf Me.TS_getTempCompleted handlerAttached = True End If My.WebServices.TemperatureService.getTempAsync(zipCode) End Sub
Para llamar al método Web getTemp de forma asincrónica, llame al método CallGetTempAsync. Cuando el método Web finaliza, el valor devuelto se pasa al controlador de eventos getTempCompletedHandler.
Vea también
Tareas
Cómo: Obtener acceso a un servicio web en código administrado
Conceptos
Acceso a los servicios Web de la aplicación