none
Windows Phone 7 / Silverlight / WSDL-Zugriff / VB.NET RRS feed

  • Frage

  • Hallo,

    sorry, wenn die Frage zu blöd ist, aber ich versuche seit Tagen mich in den WSDL-Zugriff reinzufinden und bekomme einfach keine Lösung. Vielleicht bion ich auch einfach zu blöd.

    Ziel ist es, in Silverlight oder einer App Daten abzurufen, die über einen Web-Service geliefert werden. Unserer Entwicklungsumgebung ist eigentlich Adobe Coldfusion und dort werden auch die Services als CFC zur verfügung gestellt. Das Abrufen aus 'normalen' VB-Anwendnungen klappt, aber soweit ich es (als Anfänger in Silverlight und Apps) verstanden habe, gehen die Mechanismen in Silverlight und Apps wohl anders. Sämtliche Hinweise, die ich bisher gefunden habe, gehen wohl davon aus, dass der Service selber auch in einer Microsoft-Umgebung geschrieben sein sollte. Das geht aber eben hier nicht.

    Aufgrund des Buchs 'Entwicklen für Windows Phone 7' habe ich dann mal versucht, denService ConvertTemperature (http://www.webservicex.net/ConvertTemperature) mit einzubinden. Leider geht das Buch auch nur auf eine Einbindung in einer Konsolen-Anwendung ein. Dort geht es auch (genau wie meine CFC) aber sobald ich das in einer Silverlight oder Phone Anwendung einbaue, bekomme ich folgende Warnungen:

    Warnung 1 Warnung für benutzerdefiniertes Tool: Mindestens ein Typ in der Assembly kann nicht geladen werden. Rufen Sie die LoaderExceptions-Eigenschaft ab, wenn Sie weitere Informationen benötigen. C:\Users\tbach.CTADS\AppData\Local\Temporary Projects\WindowsPhoneApplication1\Service References\ServiceReference2\Reference.svcmap 1 1 WindowsPhoneApplication1
    Warnung 2 Warnung für benutzerdefiniertes Tool: wsdl:binding kann nicht importiert werden.
    Detail: Das erforderliche WSDL-Erweiterungselement "binding" aus Namespace "http://schemas.xmlsoap.org/wsdl/http/" wurde nicht behandelt.
    XPath zur Fehlerquelle: //wsdl:definitions[@targetNamespace='http://www.webserviceX.NET/']/wsdl:binding[@name='ConvertTemperatureHttpGet'] C:\Users\tbach.CTADS\AppData\Local\Temporary Projects\WindowsPhoneApplication1\Service References\ServiceReference2\Reference.svcmap 1 1 WindowsPhoneApplication1
    Warnung 3 Warnung für benutzerdefiniertes Tool: wsdl:port kann nicht importiert werden.
    Detail: Beim Importieren von wsdl:binding, der Grundlage für wsdl:port, ist ein Fehler aufgetreten.
    XPath zu wsdl:binding: //wsdl:definitions[@targetNamespace='http://www.webserviceX.NET/']/wsdl:binding[@name='ConvertTemperatureHttpGet']
    XPath zur Fehlerquelle: //wsdl:definitions[@targetNamespace='http://www.webserviceX.NET/']/wsdl:service[@name='ConvertTemperature']/wsdl:port[@name='ConvertTemperatureHttpGet'] C:\Users\tbach.CTADS\AppData\Local\Temporary Projects\WindowsPhoneApplication1\Service References\ServiceReference2\Reference.svcmap 1 1 WindowsPhoneApplication1
    Warnung 4 Warnung für benutzerdefiniertes Tool: wsdl:binding kann nicht importiert werden.
    Detail: Das erforderliche WSDL-Erweiterungselement "binding" aus Namespace "http://schemas.xmlsoap.org/wsdl/http/" wurde nicht behandelt.
    XPath zur Fehlerquelle: //wsdl:definitions[@targetNamespace='http://www.webserviceX.NET/']/wsdl:binding[@name='ConvertTemperatureHttpPost'] C:\Users\tbach.CTADS\AppData\Local\Temporary Projects\WindowsPhoneApplication1\Service References\ServiceReference2\Reference.svcmap 1 1 WindowsPhoneApplication1
    Warnung 5 Warnung für benutzerdefiniertes Tool: wsdl:port kann nicht importiert werden.
    Detail: Beim Importieren von wsdl:binding, der Grundlage für wsdl:port, ist ein Fehler aufgetreten.
    XPath zu wsdl:binding: //wsdl:definitions[@targetNamespace='http://www.webserviceX.NET/']/wsdl:binding[@name='ConvertTemperatureHttpPost']
    XPath zur Fehlerquelle: //wsdl:definitions[@targetNamespace='http://www.webserviceX.NET/']/wsdl:service[@name='ConvertTemperature']/wsdl:port[@name='ConvertTemperatureHttpPost'] C:\Users\tbach.CTADS\AppData\Local\Temporary Projects\WindowsPhoneApplication1\Service References\ServiceReference2\Reference.svcmap 1 1 WindowsPhoneApplication1
    Warnung 6 Warnung für benutzerdefiniertes Tool: Endpoint 'ConvertTemperatureSoap12' at address 'http://webservicex.net/ConvertTemperature.asmx' is not compatible with Silverlight 3. Skipping... C:\Users\tbach.CTADS\AppData\Local\Temporary Projects\WindowsPhoneApplication1\Service References\ServiceReference2\Reference.svcmap 1 1 WindowsPhoneApplication1

    Mir ist schon klar, dass ich noch einiges lernen muss. Aber gibt es nicht irgendwo mal ein Beispiel, wie man Irgendeinen beliebigen WEBService auch funktionierend abrufen kann, so dass ich mich da mal ranarbeiten kann? Oder kann mir jemand vielleicht Hinweise auf Dokumentationen o.Ä. geben, die das Thema entsprechend behandeln?

    Gruß

    Thomas

     


    Thomas Bach
    Mittwoch, 27. April 2011 14:59

Antworten

  • So, nach vielem Suchen im Internet hat es jetzt endlich geklappt. VB.Net scheint ja doch nicht so ausführlich behandelt zu werden wie c#.

    Falls es für jemanden interessant ist, nachfolgend meine Lösung:

    Umgebung; Coldfuion 8 Enterprise Server. Hierrauf liegen cfc, die asl WEB-Service angesprochen werden können.

    Entwicklungsumgebung Visual Studio 2010

    Anforderung: Daten des Coldfusion-Services auf dem Windows Phone darstellen.

    1. Fehler meinerseits: VS war bei den Projekten auf dot.NET 4 eingestellt

    Ablauf:

    - cfc als ServiceReferenz einbinden (Dabei hat mir VS dann auch ordentlich, nach Umstellung auf 3.5, die entsprechenden Dateien u.A. die WSDL-Date generiert

     

    Button und Textbox auf die Oberfläche gelegt.

     

    Code:

    Partial Public Class MainPage
        Inherits PhoneApplicationPage

        ' Konstruktor
        Public Sub New()
            InitializeComponent()
        End Sub

        Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button1.Click
            Dim cb As Cobra.SayhelloClient = New Cobra.SayhelloClient()
            AddHandler cb.sayHelloCompleted, AddressOf cb_SayHelloCompleted
            cb.sayHelloAsync()
        End Sub

        Public Sub cb_SayHelloCompleted(sender As System.Object, e As Cobra.sayHelloCompletedEventArgs)
            TextBox1.Text = e.Result.ToString
        End Sub


    End Class

    Gruß

    Thomas


    Thomas Bach
    • Als Antwort markiert Thomas Bach Freitag, 29. April 2011 10:53
    Freitag, 29. April 2011 10:53

Alle Antworten

  • Hey Thomas,

     

    ich habe von den CFC-Services keine Ahnung aber wenn es auch hier eine WDSL-Datei gibt sollte auch hier der Aufruf möglich sein, schließlich ist das WSDL so eine Art von Standart.

    Vielleicht erstellst du auch bereits so eine Wrapper-Klasse aber da ich es nicht weiß nenne ich einfach mal meine Variante von WSDL kompatiblen Services einen Wrapper zu erstellen.

    Ich lasse mir durch den nachfolgenden Befehl die Wrapper-Klasse erstellen:

    wsdl.exe /o:Service.cs http://localhost:50414/Service.asmx?WSDL
    

    Anschließend kompiliere ich mit dem nachfolgendem Befehl diese Wrapper-Klasse zu einer Dll und binde diese DLL dann als normalen Verweis in mein Windows Phone Projekt ein:

    %WINDIR%\Microsoft.NET\Framework\v3.5\csc.exe /out:Service.dll /target:library Service.cs
    

    Dann kann ich über die Methoden dieses Services auf den Service zugreifen, allerdings nur Asynchron da dies in Silverlight und auf dem Phone so gefordert ist.

    Vielleicht kannst du uns auch einwenig Infos geben, wie du die Verbindung zu dem Service aufbaust.

    Gruß

    RudolfG


    "Der Nachteil der Intelligenz besteht darin, dass man ununterbrochen gezwungen ist, dazuzulernen." Georg Bernhard Shaw
    Mittwoch, 27. April 2011 23:13
  • Hallo Rudolf,

    danke für die Antwort. Ich habe es leider heute nicht geschafft, die Tips auszuprobieren. Mal sehen, ob ds heute abend klappt. Ich stelle dann die ausführlichen Infos ein.

    Danke

    Thomas


    Thomas Bach
    Donnerstag, 28. April 2011 15:30
  • Autsch,

    ich glaube, ich habe zumindest einen Fehler gefunden. Ich habe die Projekte immer auf der Basis von Dot.NET 4 erstellt.

    Mal sehen, ob es jetzt klaptt.

     


    Thomas Bach
    Freitag, 29. April 2011 09:20
  • So, nach vielem Suchen im Internet hat es jetzt endlich geklappt. VB.Net scheint ja doch nicht so ausführlich behandelt zu werden wie c#.

    Falls es für jemanden interessant ist, nachfolgend meine Lösung:

    Umgebung; Coldfuion 8 Enterprise Server. Hierrauf liegen cfc, die asl WEB-Service angesprochen werden können.

    Entwicklungsumgebung Visual Studio 2010

    Anforderung: Daten des Coldfusion-Services auf dem Windows Phone darstellen.

    1. Fehler meinerseits: VS war bei den Projekten auf dot.NET 4 eingestellt

    Ablauf:

    - cfc als ServiceReferenz einbinden (Dabei hat mir VS dann auch ordentlich, nach Umstellung auf 3.5, die entsprechenden Dateien u.A. die WSDL-Date generiert

     

    Button und Textbox auf die Oberfläche gelegt.

     

    Code:

    Partial Public Class MainPage
        Inherits PhoneApplicationPage

        ' Konstruktor
        Public Sub New()
            InitializeComponent()
        End Sub

        Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button1.Click
            Dim cb As Cobra.SayhelloClient = New Cobra.SayhelloClient()
            AddHandler cb.sayHelloCompleted, AddressOf cb_SayHelloCompleted
            cb.sayHelloAsync()
        End Sub

        Public Sub cb_SayHelloCompleted(sender As System.Object, e As Cobra.sayHelloCompletedEventArgs)
            TextBox1.Text = e.Result.ToString
        End Sub


    End Class

    Gruß

    Thomas


    Thomas Bach
    • Als Antwort markiert Thomas Bach Freitag, 29. April 2011 10:53
    Freitag, 29. April 2011 10:53