none
Webservice Starten RRS feed

  • Frage

  • Ich habe bereits ein kleines Programm mit VB 2008 Express erstellt. Dieses liest aus einer Datei bestimmte Zeilen aus und schreibt diese in eine XML Datei ( die XML Datei ist allerdings noch nicht komplett, benötige da vielleicht auch noch Hilfe). Nun muss ein Webservice gestartet werden, der dise XML Datei benutzt und interpretiert. Der Webservice läuft schon, und funktioniert auch. Die Frage ist nun wie ich in meinem Code den Webservice Starten lassen kann?

    PS: ich bin absoluter Neuling und habe nicht viel Ahnung vom Programieren in VB, auch mit dem Thema Webservice kenn ich mich nicht so gut aus.

    Hier mein bisheriger Code:

    Imports
     System.Xml

    Public Class Form1
    Private myDict As New Dictionary(Of String , List(Of String ))
    Private path As String = "C:\Users\Katja\Desktop\Testordner"
    Private pattern() As String = {"Test_BenchStr", "Test_StartDate", "Test_StartTime", "Test_Number", "Test_Operator", "Test_Customer", "Test_Purpose", _
    "Test_Hardware", "Test_MappingStr", "Turbo_Variante", "Register_No", "Turbo_Size", "Comp_Spec", "D_S", "D_2", "Turb_Spec", _
    "D_8i", "D_8a", "D_8m", "A_geo", "A_9", "n_ATL_max.", "T_nV_high", "dp_nV_high", "T_vT_high", "dp_vT_high", "T_Ol_high", _
    "V_Ol_low", "T_W_high", "n_t_sel", "T_refV", "p_refV", "Phi_refV"}

    Private Sub Button1_Click(ByVal sender As System.Object , ByVal e As System.EventArgs) Handles Button1.Click
    'Wir holen uns erst mal alle verfügbaren Files
    Dim files() As String = IO.Directory.GetFiles(path)
    'Nun durchlaufen wir alle Files und lesen die Zeilen ein
    For Each file As String In files
    'Wir öffnen jedes File
    'Neh besser jedes File mit der Endung eht
    If file.EndsWith(".eht") Then
    'Nun öffnen wir einen FileStream
    Using fs As New IO.FileStream(file, IO.FileMode.Open)
    'Legen einen Reader drauf
    Dim sr As New IO.StreamReader(fs)
    'Und legen uns einen List an
    Dim list As New List(Of String )
    While Not sr.EndOfStream
    'Lesen die Zeilen und speichern sie in einer Liste zwischen
    list.Add(sr.ReadLine)
    End While
    'Nun schieben wir das ganze in ein Dict
    'Als Key nehemen wir den Filenamen komplett mit Pfad
    'Der Inhalt des Files ist die der liste Liste
    Me .myDict.Add(file, list)
    End Using
    End If
    Next
    'Alle Files(Keys) in eine ComboBox ausgeben
    For Each s As String In Me .myDict.Keys
    Me .ComboBox1.Items.Add(s)
    Next
    End Sub

    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object , ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
    'Bei der Auswahl aus der Combobox
    'Holen wir uns nun den Inhalt der ausgewählte Datei aus dem Dict und zeigen den in der Listbox an
    'Das tun wir in dem wir mit dem Key (Auswahl der ComboBox) auf das Dict zugreifen und die List
    'mit dem Inhalt des Files holen
    Dim key As String = CStr (Me .ComboBox1.Items(Me .ComboBox1.SelectedIndex))
    Dim inhalt As List(Of String ) = Me .myDict.Item(key)
    Me .ListBox1.Items.Clear()
    'Me.ListBox1.Items.AddRange(inhalt.ToArray)
    Dim gesuchte As New Dictionary(Of String , String )
    'Alle gesuchten pattern durchlaufen
    For i As Integer = 0 To pattern.Length - 1
    'Und hier schicken wir den Inhalt zur Analyse
    Dim found As String = Me .FindPatter(pattern(i), inhalt)
    'Also was gefunden
    If found <> "" Then
    gesuchte.Add(pattern(i), found)
    End If
    Next
    'Nun geben wir die gefundenen aus
    For Each k As String In gesuchte.Keys
    Me .ListBox1.Items.Add(k & " <-> " & gesuchte.Item(k))
    Next
    End Sub

    Private Function FindPatter(ByVal pattern As String , ByVal data As List(Of String )) As String
    'Nun versuchen wir die Zeile aus der Liste zu holen
    For Each zeile As String In data
    If zeile.StartsWith(pattern) Then
    'Wenn die Zeile mit dem gesuchtem Inhalt gefunden wurde
    If zeile <> "" Then
    'teile wir die Zeile
    Dim zeilenTeile() As String = zeile.Split("="c)
    'Wenn mindestens zwei Einträge im array sind
    If zeilenTeile.Length >= 2 Then
    'holen wir uns den zweiten Eintrag
    'da sollte der gesuchte inhalt stehen
    Dim gesucht As String
    gesucht = zeilenTeile(1)
    'Achtung der Text des Labels wird immer wieder überschrieben wenn mehr als einen Zeile das Pattern enthält
    Label1.Text = ("gefundener Wert <-> " & gesucht & " <-> in Zeile <-> " & (data.IndexOf(zeile) + 1).ToString)
    Return gesucht
    End If
    End If
    End If
    Next
    Return ""
    End Function

    Private Sub MakeXML(ByVal data As Dictionary(Of String , String ))
    Dim doc As New XmlDocument
    Dim rootElement, childElement As XmlElement
    Dim decl As XmlDeclaration = doc.CreateXmlDeclaration("1.0", "utf-8", "")
    doc.AppendChild(decl)
    rootElement = AppendElement(doc, "FileProperties")
    For Each key As String In data.Keys
    childElement = AppendElement(rootElement, "FileProperty")
    childElement.SetAttribute("Name", key)
    childElement.SetAttribute("Value", data.Item(key))
    Next
    doc.Save("C:\Users\Katja\Desktop\Testordner\test1.xml")
    End Sub

    Private Function AppendElement(ByVal parentNode As XmlNode, ByVal elementName As String ) As XmlElement
    'XmlElement erzeugen und in parentNode einhängen, das neue XmlElement zurückgeben()
    Dim doc As XmlDocument
    Dim newElement As XmlElement
    If parentNode.NodeType = XmlNodeType.Document Then 'parentNode ist das OwnerDocument(selbst)
    doc = DirectCast (parentNode, XmlDocument)
    Else
    doc = parentNode.OwnerDocument
    End If
    newElement = doc.CreateElement(elementName)
    parentNode.AppendChild(newElement)
    Return newElement
    End Function
    End Class
    Dienstag, 5. Januar 2010 14:16

Antworten

  • Hallo Jan, um einen WebService zu starten im Sinne "WebService nutzen" musst du dem Projekt eine WebRefernce hinzufügen. Damit wird ein Proxy generiert, der die alle Web-Methoden zur Verfügung stellt. In der Anwendung instanzierst du die generierte proxy-Klasse und rufst die Webmethoden auf.

    --
    Peter
    Mittwoch, 13. Januar 2010 20:03

Alle Antworten