Fragensteller
[VBScript] Problem beim Erhalt einer String-Sequence von einem Webservice

Allgemeine Diskussion
-
Hallo alle zusammen,
gleich vorweg: Entschuldigung falls ich hier im falschen Bereich gelandet bin, aber ich habe keinen eigenständigen Visual Basic Script Bereich gefunden. Deshalb schreibe ich hier meine Frage hinein.
Zur Ausgangssituation: Wir haben hier in dem Unternehmen, wo ich als Praktikant beschäftigt bin, eine Testsoftware (geschrieben unter JAVA), welche eine Webservice-Schnittstelle (AXIS 2) für die Kommunikation zur Verfügung stellt. Jetzt versuche ich gerade das HP Quality Center 11 (Testverwaltungssoftware) über die VBScript-Schnittstelle soweit zu bekommen, dass wir die Tests, welche wir benötigen, im HP Quality Center erstellen und warten können. Soweit sogut, mit der MSSOAP30.dll funktioniert das Ganze wunderbar.
Allerdings habe ich jetzt ein kleines Problem, wo ich schon den ganzen Tag dran sitze. Wenn ich meine Methode aufrufe, damit ich alle IDs, welche zu einem Testcase zusammengefasst worden sind, zurück bekomme funktioniert dies zwar unter Java sowie C++ (Wartungskonsole), allerdings habe ich unter VBScript das Problem dass ich nur auf das erste Element zurückgreifen kann.
Folgendermaßen sieht die Definiton in der WSDL Datei aus:
<xs:element name="getTestCaseTestItemsResponse"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" minOccurs="0" name="return" nillable="true" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element>
Die Soap-Nachricht beim Aufruf sieht folgendermaßen aus:
<?xml version = "1.0" encoding = "UTF8" ?> <SOAP-ENV:Envelope xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Body> <getTestCaseTestItems xmlns="http://testaction"> <testCaseID xmlns:SOAPSDK4="http://testaction">55567</testCaseID> </getTestCaseTestItems> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Und die Nachricht, die ich zurück bekomme, wird folgendermaßen zusammengestellt:
<?xml version = "1.0" encoding = "UTF8" ?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <ns:getTestCaseTestItemsResponse xmlns:ns="http://testaction" xmlns:ax21="http://testaction/xsd"> <ns:return>55567</ns:return> <ns:return>16500</ns:return> <ns:return>996379</ns:return> <ns:return>996377</ns:return> <ns:return>996378</ns:return> <ns:return>16500_end</ns:return> <ns:return>996380</ns:return> <ns:return>996381</ns:return> <ns:return>996380_end</ns:return> <ns:return>996382</ns:return> <ns:return>996383</ns:return> <ns:return>996382_end</ns:return> <ns:return>55567_end</ns:return> </ns:getTestCaseTestItemsResponse> </soapenv:Body> </soapenv:Envelope>
Versuche ich nun, mit nachfoglendem VBScript darauf zuzugreifen, erhalte ich das erste Element zurück und nicht alle. Genauso habe ich bereits versucht, das WSDL-File von xs:string auf xs:anyType abzuändern, da in der Hilfe zu MSSOAP30 steht, dass nur AnyType-Arrays zurückgegeben werden können.
WSDL = "C:\\Users\\Markus Zimmer\\Downloads\\KLTASOAPListener.wsdl" set SoapClient = CreateObject ("MSSOAP.SoapClient30") Call SoapClient.mssoapinit(WSDL) dim items id = "55567" items = SoapClient.getTestCaseTestItems(id) DebugMessage items 'DebugMessage schreibt den String in ein InternetExplorer Fenster
Wie kann ich nun am Besten auf alle Elemente zugreifen? Ich hab auch schon versucht ein Array anzulegen, welches ich dann einfach dynamisch reallokiere - allerdings hat dies das Problem, dass ich dann ein Array mit 55567 Elemten bekomme, da ich eben den String mit der ID erhalte und nicht ein Objekt ansich.
Hat jemand vielleicht eine Lösungsidee für mich, wie ich trotzdem auf meine ID's zugreifen kann? Eine Alternative wäre es, dass ich unter C++ ein COM-Objekt erzeuge und dort mir das Array anlege, jedoch hat mein Kollege richtig gemeint: "Es wäre besser wenn wir das direkt drinnen haben anstatt da mit mehreren Objekten hantieren zu müssen".
Danke an alle schonmal im Vorraus.
Liebe Grüße
Markus
- Typ geändert Robert BreitenhoferModerator Freitag, 3. Juni 2011 08:26 Laut OP: „nach kurzer Beratung mit dem Kollegen sind wir zu dem Entschluss gekommen“
Alle Antworten
-
Hallo Markus Zimmer,
Zur Vollständigkeit poste ich hier die Diskussion in Zusammenhang mit diesem Thread:
[VBScript] Array von Soap-Webservice erhalten
Grüße,
Robert