Freigeben über


Gewusst wie: Asynchrones Aufrufen eines Webdiensts

Aktualisiert: November 2007

In diesem Beispiel wird ein Handler an das Ereignis für den asynchronen Handler eines Webdiensts angefügt, sodass dieser das Ergebnis eines asynchronen Methodenaufrufs abrufen kann. In diesem Beispiel wird der unter http://www.xmethods.net verfügbare DemoTemperatureService-Webdienst verwendet.

Wenn Sie in einem Projekt in der integrierten Entwicklungsumgebung von Visual Studio einen Verweis auf einen Webdienst erstellen, wird dieser dem My.WebServices-Objekt hinzugefügt, und die IDE generiert eine Proxyklasse für den Zugriff auf den angegebenen Webdienst.

Die Proxyklasse ermöglicht einen synchronen Aufruf der Webdienstmethoden. Bei diesem Verfahren wartet die Anwendung auf den Abschluss der Funktion. Darüber hinaus erstellt der Proxy zusätzliche Member für den asynchronen Aufruf der Methode. Für jede Webdienstfunktion (NameOfWebServiceFunction) erstellt der Proxy eine NameOfWebServiceFunctionAsync-Subroutine, ein NameOfWebServiceFunctionCompleted-Ereignis und eine NameOfWebServiceFunctionCompletedEventArgs-Klasse. Im Beispiel wird veranschaulicht, wie mithilfe der asynchronen Member auf die getTemp-Funktion des DemoTemperatureService-Webdiensts zugegriffen werden kann.

Hinweis:

Dieser Code kann in Webanwendungen nicht ausgeführt werden, da ASP.NET das My.WebServices-Objekt nicht unterstützt.

So rufen Sie einen Webdienst asynchron auf

  1. Erstellen Sie einen Verweis auf den DemoTemperatureService-Webdienst unter http://www.xmethods.net. Die Adresse des Webdienstes lautet wie folgt:

    http://www.xmethods.net/sd/2001/DemoTemperatureService.wsdl
    

    Weitere Informationen finden Sie unter Gewusst wie: Zugreifen auf einen Webdienst in verwaltetem Code.

  2. Fügen Sie einen Ereignishandler für das getTempCompleted-Ereignis hinzu:

    Private Sub getTempCompletedHandler(ByVal sender As Object, _
        ByVal e As net.xmethods.www.getTempCompletedEventArgs)
    
        MsgBox("Temperature: " & e.Result)
    End Sub
    
    Hinweis:

    Sie können die Handles-Anweisung nicht verwenden, um einem Ereignishandler die Ereignisse des My.WebServices-Objekts zuzuordnen.

  3. Fügen Sie ein Feld hinzu, mit dem verfolgt werden kann, ob der Ereignishandler dem getTempCompleted-Ereignis hinzugefügt wurde:

    Private handlerAttached As Boolean = False
    
  4. Fügen Sie bei Bedarf eine Methode hinzu, mit der der Ereignishandler dem getTempCompleted-Ereignis hinzugefügt und die getTempAsynch-Methode aufgerufen werden kann:

    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
    

    Rufen Sie zum asynchronen Aufruf der getTemp-Webmethode die CallGetTempAsync-Methode auf. Beim Abschluss der Webmethode wird deren Rückgabewert an den getTempCompletedHandler-Ereignishandler übergeben.

Siehe auch

Aufgaben

Gewusst wie: Zugreifen auf einen Webdienst in verwaltetem Code

Konzepte

Zugreifen auf Anwendungswebdienste

Referenz

My.WebServices-Objekt