Collections oder Arraylist an Webservice übergeben

  • VB.NET (ASP)
  • Web Services

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Kangaroo.

    Collections oder Arraylist an Webservice übergeben

    Hallo Leute,

    ich bräuchte eure Hilfe für die übergabe einer ArrayList an das Webservice.

    Mit einfachen Datentypen funktioniert es wunderbar! Jetzt müsste ich aber eine Arraylist an das Service übergeben.

    Service:

    VB.NET-Quellcode

    1. <DataContract()>
    2. Public Class Daten
    3. <DataMember()>
    4. Public Property DatenArraylist As ArrayList
    5. End Class


    Ich arbeite mit svcuti.exel und erzeuge den Client Code.

    Mit der Funktion SendDataService übergebe ich die Daten an das Service:
    Client:

    VB.NET-Quellcode

    1. Public Function SendDataService(ByVal ErstellteArraylist As ArrayList) As ResultatType
    2. _BerechnungType.DatenArraylist = ErstellteArraylist
    3. End Function


    Der Datentyp dem ich im Service "_BerechnungType.DatenArraylis" als Arraylist definiert habe, gibt es nicht mehr.
    Und ich bekomme die Fehlermeldung für "ErstellteArraylist": Der Wert vom Typ "System.Collection.Arraylist" kann nicht in 1-dimensionales Array von Objekt" konvertiert werden.

    Ich weiß auch mittlerweile das ich eine Arraylist nicht wie einfache DatenTypen. z.B.Integer übergeben kann.
    Bei der suche nach einer Lösung bin ich auf das Schlüsselwort "DataContractSerializer" gestoßen.

    Könnt Ihr mir sagen wie ich den DataContractSerializer in meinen Code einbinden kann.

    Ich müsste also "nur" die Daten die sich in "ErstellteArraylist" befinden in das Service bekommen, um im Service Berechnungen anhand der Daten durchführen zu können.

    LG
    Franz

    DataContractSerializer WCF

    Hallo Kangaroo,

    nein ich möchte die Daten nicht im JSON-Format übergeben.

    Vieleicht weiß ja jemand wie ich den DataContractSerializer anhand meines Codes richtig anwenden muss, um mein Problem zu löse.


    LG
    Franz

    VBuchner schrieb:

    nein ich möchte die Daten nicht im JSON-Format übergeben.
    Doch: Du generierst mit svcutil.exe [WCF ]DataContracts und damit das Format mit der Client und Service Daten austauschen. Der DataContractSerializer wird dabei im Hintergrund benutzt: dieser ist aber sehr pingelig was die Typisierung der Daten angeht. Deshalb vermute ich mal er mag Deine 'untypisierte' ArrayList nicht , verwende mal eine List (of T): z.B. List(of String) oder welche Daten auch immer Du übertragen möchtest.
    Hei Kangaroo,

    danke für deine Antwort, bitte verzeih meine dummen Fragen. Aber du scheinst Ahnung von dieser Materie zu haben.
    Du wirst lachen aber ich habe ursprünglich eine List (of T), dachte aber es geht leichter mit den Datentyp-Arraylist.

    Ich habe folgende Seite gefunden: msdn.microsoft.com/de-de/library/aa347850.aspx

    Aber ich tue mir schwer dies zu verstehen oder besser gesagt auf mein Problem anzuwenden.

    Könntest du mir Sagen wie der Code im Webservice aussehen müsste, woraus ich dann mit svcutil.exe den Client erstelle.

    LG
    Franz

    VBuchner schrieb:

    Aber du scheinst Ahnung von dieser Materie zu haben.
    Das täuscht: ich kenne mich mit .ASP nur sehr oberflächlich, dafür aber mit JSON und XML ziemlich gut aus.

    Um einen [WCF] WebService zu erstellen gibt es die verschiedensten Wege, insofern kann ich Dir kaum etwas erzählen ohne Deine Vorgehensweise und die ServiceContracts zu kennen. Aber ersetze doch mal wie gesagt testweise die Arraylist durch eine (typisierte) List(of T) und schau ob es dann funktioniert.