Toon posts:

[vb.net] Eigen klasse versturen via een webservice

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

ik wil een collection van van mijn zelfgemaakte klasses versturen via een webservice.
Als return waarde van de webserive NIET het type collection geven.

Omdat het als plain text vestruurd moet worden.
Nu wil ik dit op een nette en goede manier doen (leren).

Ik ben iets tegen gekomen over "Serializable", maar weet niet zogoed wat ik daar mee aan moet.
Ik kan nu wel weer zelf een klasse maken die gewoon hard gecodeerd een string opbouwt (waar in dan xml blijkt te zitten), maar dit lijkt me niet echt netjes.

Kan iemand mij hier een beetje mee opweg helpen?

Zelf heb ik al op de msdn gezocht, maar ben er niet echt wijzer van geworden.
code:
1
2
3
4
5
<Serializable>
<ClassInterface(ClassInterfaceType.AutoDual)>
MustInherit Public Class Type
   Inherits MemberInfo
   Implements IReflect

Verwijderd

Topicstarter
Heeft iemand vandaag misschien een idee ?

Verwijderd

wat heb je al aan code gebouwd?

Verwijderd

Topicstarter
Ik heb nu gewoon een klasse gemaakt, met een aantal properties en methods.

Nu wil dat ik dat object versturen, dus alleen de "properties", via een webservice.
Zoals ik gelezen heb moet ik mijn object can serializen.

Ik heb dit bovenaan mijn class staan:
<Serializable()> Public Class

Maar ik denk dat ik er dan nog een method/event aan moet toevoegen, maa dat kan ik nergens vinden.

Ik wil het eingelijk niet oplossen door met object via een method eerst naar xml te "converteren", dat naar de webservice sturen. Ik wel dat het component het zelf doet (als het mogelijk is)

Verwijderd

eigenlijk wil ik meer code zien, dat je hebt gemaakt. Ik heb nog geen volledig beeld bij wat je probeert.

Op basis van jouw verhaal heb ik het volgende gemaakt:

Begin met een nieuw project: "asp.net webservice"

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
   <WebMethod(), XmlIncludeAttribute(GetType(Order)), XmlIncludeAttribute(GetType(Detail))> Public Function GetIets()
      '<WebMethod()> <XmlInclude(typeof(Order))> Public Function GetIets()

      Dim Order As New Order()

      Dim Detail1 As New Detail("1", "100.000")
      Dim Detail2 As New Detail("2", "200.000")

      Order.Toevoegen(Detail1)
      Order.Toevoegen(Detail2)

      Return Order
   End Function
End Class

Public Class Order
   Public Details As ArrayList

   Public Function Toevoegen(ByVal Value As Object)
      If IsNothing(Details) Then
         Details = New ArrayList()
      End If
      Details.Add(Value)
   End Function
End Class

Public Class Detail
   Public Omschr As String
   Public Prijs As String

   Public Sub New()

   End Sub

   Public Sub New(ByVal Description As String, ByVal TotalPrice As String)
      Omschr = Description
      Prijs = TotalPrice
   End Sub
End Class



Als je dit uitvoert, met F5... dan krijg je een internet pagina:
"
Service1
The following operations are supported. For a formal definition, please review the Service Description.

GetIets
"

Klik op 'GetIets' ....
Klik op de knop 'Invoke'
En je krijgt een mooi resultaat in xml van de verzonden klasse.

Verwijderd

Topicstarter
Dan zal het wel aan de bovenste regel liggen

<WebMethod(), XmlIncludeAttribute(GetType(Order)), XmlIncludeAttribute(GetType(Detail))> Public Function GetIets()

Voor de rest lijkt het op jouw code, alleen gebruik ik een collection ipv arraylist

Verwijderd

als je het aan de praat krijgt met collection, wil je dan de code hier neerzetten? Je moet er namelijk nog wat extra moeite voor doen, in vergelijking met een arraylist.

Verwijderd

Topicstarter
Net met de collection krijg ik het niet aan de gang.
Hij blijft zeuren over de Add Method, maar ik kijk daar nog even verder naar !!
Met de ArrayList wel !!!

IntroV BEDANKT !!

Is misschien ook een mogelijk het om de output XML "automatisch" de deserialezen terug naar het object? om mat ik in mijn klasse een functie maken readFromXML?

Verwijderd

Als je vanuit bijvoorbeeld een WinApp een referentie gaat leggen naar de WebService die remote wordt gehost, dan zal je aan de slag moeten met XSD (XML Schema Definition Tool) voordat je kan deserializen.
Pagina: 1