vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Verschiedenes / Sonstiges   |   VB-Versionen: VB.NET17.09.07
Aufruf eines Webservices in einer Windows-Anwendung (VB.NET)

Dieser Artikel beschreibt, wie man innerhalb einer Windows-Anwendung auf einen bestehenden Webservice zugreift.

Autor:   Carsten StuplichBewertung:     [ Jetzt bewerten ]Views:  32.947 
ohne HomepageSystem:  WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11kein Beispielprojekt 

Dieser Artikel soll nicht beschreiben wie Sie einen Webservice unter .NET programmieren, sondern wie man auf einen bestehenden Webservice zugreift (für die Erstellung eines eigenen Webservices unter .NET finden Sie im Internet sehr viele Beiträge. Suchen Sie einfach nach "Webservice asp.net").

Beispiel-Webservice
Um Ihnen zu zeigen wie man in einer Windows-Anwendung (VB.NET) auf einen Webservice zugreift, hab ich mir in Visual Studio 2005 einen Webservice über die Vorlage "ASP.NET-Webdienstanwendung" erstellt und nicht weiter angepasst, da diese Vorlage bereits eine Methode mit dem Namen "HelloWorld" bereitstellt und uns zum Austesten reicht.

Der Code der Serviceklasse Service1.asmx sieht wie folgt aus:

Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.ComponentModel
 
Imports System.Data.OleDb
 
<System.Web.Services.WebService(Namespace:="http://tempuri.org/")> _
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _
Public Class Service1
  Inherits System.Web.Services.WebService
 
  <WebMethod()> _
  Public Function HelloWorld() As String
    Return "Hello World"
  End Function
 
End Class

1. Einbinden eines Webservices unter VB.NET
Damit Ihre Anwendung auf einen Webservice zugreifen kann, müssen sie als erstes einen s.g. "Webverweis" hinzufügen. Hierfür rufen Sie im Menü "Projekt > Webverweis hinzufügen…" auf. Daraufhin öffnet sich ein Dialog, indem Sie die URL des Webservices (z.B. <http://servername/sasws/Service1.asmx>) bekannt geben und einen Namen für den Webservice (im Beispiel "HalloWeltWebservice") vergeben.

Nachdem Sie auf den Button "Vereis hinzufügen" geklickt haben, steht Ihnen der Webservice in Ihrer Anwendung zur Verfügung und kann wie eine "normale" Klasse verwendet werden.

Webverweis hinzufügen

2. Beispiel-Code für Synchronen Aufruf eines Webservices
Folgender Code ist nötig um die Methode "HelloWorld" des o.g. Webservices synchron auszuführen.

Private Sub btnSynchron_Click(ByVal sender As Object, _
  ByVal e As System.EventArgs) Handles btnSynchron.Click
 
  ' Objekt für Webservice "TestWebservice" erstellen
  Dim oTestWebservice As HalloWeltWebservice.Service1 = _
    New HalloWeltWebservice.Service1
 
  ' Standard-Authentifizierung für Webservice festlegen
  ' (ist nötig wenn im Webserver NT-Authentifizierung anstatt Anonym aktiviert ist)
  ' (Andernfalls tritt ein Fehler auf weil man nicht für den Zugriff berechtigt ist.
  oTestWebservice.Credentials = System.Net.CredentialCache.DefaultCredentials
 
  ' Synchroner Aurfurf der Methode "HelloWorld" in Webservice "TestWebservice" 
  ' aufrufen und Rückgabewert per Messagebox ausgeben
  MsgBox(oTestWebservice.HelloWorld)
End Sub

3. Beispiel-Code für Asynchronen Aufruf eines Webservices
Folgender Code ist nötig um die Methode "HelloWorld" des o.g. Webservices asynchron auszuführen.

Private Sub btnASynchron_Click(ByVal sender As Object, _
  ByVal e As System.EventArgs) Handles btnASynchron.Click
 
  ' Objekt für Webservice "TestWebservice" erstellen
  Dim oTestWebservice As HalloWeltWebservice.Service1 _
    = New HalloWeltWebservice.Service1
 
  ' Standard-Authentifizierung für Webservice festlegen
  ' (ist nötig wenn im Webserver NT-Authentifizierung anstatt Anonym aktiviert ist)
  ' (Andernfalls tritt ein Fehler auf weil man nicht für den Zugriff berechtigt ist.
  ' Kann auskommentiert werden wenn nicht benötigt)
  oTestWebservice.Credentials = System.Net.CredentialCache.DefaultCredentials
 
  ' Asynchroner Aurfurf der Methode "HelloWorld" in Webservice "TestWebservice" 
  ' aufrufen und Rückgabewert per Messagebox ausgeben
  oTestWebservice.HelloWorldAsync()
 
  AddHandler oTestWebservice.HelloWorldCompleted, _
    AddressOf HalloWeltWebservice_HelloWorldCompleted
End Sub
''' <summary>
''' Sub die ausgeführt wird wenn Methode "HelloWorld" in Webservice "TestWebservice" 
''' durchgelaufen ist (bei asynchronem Aufruf der Methode "HelloWorld")
''' </summary>
Private Sub HalloWeltWebservice_HelloWorldCompleted(ByVal sender As Object, _
  ByVal e As HalloWeltWebservice.HelloWorldCompletedEventArgs)
 
  Dim sResult As String = e.Result
  MsgBox(sResult)
End Sub

Anmerkung:
Über AddHandler beim Asynchronen-Aufruf wird bekanntgegeben, welche Sub ausgeführt werden soll, wenn die Methode "HelloWord" durchgelaufen ist.
 

Dieser Tipp wurde bereits 32.947 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel