31. marts 2007 - 15:40
Der er
12 kommentarer og 1 løsning
Kan man overføre en ArrayList igennem webservices?
Jeg har uden held forsøgt at overføre en ArrayListe igennem webservice, er dette muligt?
Annonceindlæg fra SoftwareOne
31. marts 2007 - 15:48
#1
det mener jeg, men er ret formålsløst (en web service bruges til at lave et teknologi neutralt interface - et .NET eller PHP program kan ligesom ikke bruge en java.util.ArrayList til noget) løsningen er simpel: du konverterer din ArrayList til et array af samme type og returnerer det i.s.f. - alle sprog understøtter arrays
31. marts 2007 - 15:54
#2
Okay det kan jeg sagtens forstå logikken i, da jeg egentlig kun skal bruge Listen på serversiden. Jeg har prøvet på denne måde: ArrayList<PStation> lstPStations = new ArrayList<PStation>(); public SAP() { lstPStations.add(new PStation(1,"Klostertorv","Kirkegade 14a", 25)); lstPStations.add(new PStation(2,"Klostertorv","Kirkegade 14b", 24)); lstPStations.add(new PStation(3,"Klostertorv","Kirkegade 14c", 23)); lstPStations.add(new PStation(4,"Klostertorv","Kirkegade 14d", 22)); } public PStation[] getP() { PStation[] outArray = lstPStations.ToArray(); return outArray; } Som giver følgende fejl: symbol : method ToArray() location: class java.util.ArrayList<TTSS.PStation> PStation[] outArray = lstPStations.ToArray(); ^ 1 error
31. marts 2007 - 16:03
#3
.toArray()
31. marts 2007 - 16:04
#4
nok endda PStation[] outArray = (PStation[])lstPStations.toArray();
31. marts 2007 - 16:46
#5
I C# applikationen som er forbundet til services kommer følgende fejl når jeg konventerer ArrayListen til et array: java.lang.ClassCastException: [Ljava.lang.Object; Ved denne metode virker det ikke: public PStation[] getP() { PStation[] outArray = (PStation[])lstPStations.toArray(); return outArray; } Her virker det som det skal: public PStation[] getP() { PStation[] liste1 = new PStation[3]; liste1[0] = new PStation(1,"Klostertorv1","Kirkegade 14a1", 251); liste1[1] = new PStation(2,"Klostertorv2","Kirkegade 14a2", 252); liste1[2] = new PStation(3,"Klostertorv3","Kirkegade 14a3", 253); return liste1; } Der burde da ikke være nogen forskel mellen disse løsninger?
31. marts 2007 - 17:51
#6
Jeg har fundet ud af hvilken exception der bliver kastet: [Ljava.lang.Object; Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 Underligt..
31. marts 2007 - 18:03
#7
Og stadig hvis jeg gør: PStation[] outArray = {}; lstPStations.toArray(outArray);
31. marts 2007 - 18:41
#8
indeholder lstPStations det som den skal ?
31. marts 2007 - 19:02
#9
Ja det gør den. Fik det løst på en grim måde, og kan ikke forstå hvorfor de tidligere forsøg ikke virkede. Her kan det ses hvordan jeg fik det løst: public PStation[] getP() { PStation[] outArray = new PStation[lstPStations.size()]; lstPStations.toArray(outArray); return outArray; } Arne_v -> Som altid har du været rigtig god til at hjælpe, tak for det, hvis du vil smide et svar har du fået lidt ekstra point i kassen:)
31. marts 2007 - 19:30
#10
Er det egentlig muligt at lave en form for adgangsbeskyttelse af en webservie vha. login eller ligende?
31. marts 2007 - 19:56
#11
svar
31. marts 2007 - 19:58
#12
ja der er flere forskellige modeller: 1) send brugernavn/password med hvert kald 2) maintain session mellem kald og login med brugernavn/password kun som første kalde 3) brug WSS og digital signature
31. marts 2007 - 20:15
#13
Tak for det! Tror bare jeg tager denne lette løsning, nummer 1, da det kun er en skoleopgave:-)
Kurser inden for grundlæggende programmering