SOAP Daten auswerten

  • VB.NET
  • .NET (FX) 4.0

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

    SOAP Daten auswerten

    ​Hallo Leute, ich habe ein Tool das von einem Server via SOAP Daten in ein Array lädt. Den Webverweis hab ich eingebunden... der Code zum Download ist

    VB.NET-Quellcode

    1. Dim sClient as EmergencyData_WEBVERWEIS.EmergencyService
    2. sClient = New EmergencyData_WEBVERWEIS.EmergencyService
    3. Try
    4. Dim r As Array
    5. r = sClient.GetEmergencyDatas
    6. Dim i As Integer
    7. For i = 0 to UBound(r)
    8. Me.ListBox1.Items.Add(r(i))
    9. Next
    10. Catch ex as Exception
    11. End Try


    nur kommt in der ListBox nur: "EmergencyData_WEBVERWEIS.EmergencyService" an.

    Meine Frage .. wie kann ich die heruntergeladenen Daten richtig auslesen und gegebenenfalls in einen XML schreiben?

    Vielen Dank

    thefiloe schrieb:

    r(i) ist halt ein Objekt.
    Du musst da draus halten einen schönen String machen, damit man etwas lesen kann.


    kannst du mir noch weiterhelfen wie ich das objekt in verwertbare daten umwandle?

    mit

    VB.NET-Quellcode

    1. Dim a as string
    2. a = CType(r(i), String)


    bekomme ich die Fehlermeldung: "Ungültige Konvertierung von Typ EmergencyData in Typ String

    Danke
    Dazu müsste man wissen was GetEmergencyDatas zurückliefert.
    Eines ist jedoch sicher ... damit kommste nicht weit: Dim r As Array


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Das ist der PHP code der Funktioniert und als ergebnis eine XML speichert
    wie ich den code in vb ändere hab ich aber leider keine ahnung

    PHP-Quellcode

    1. [b][/b]function writeToFile($text) {
    2. $filename = 'enfws.xml';
    3. if (is_writable($filename)) {
    4. if (!$handle = fopen($filename, "w")) {
    5. return "Konnte Datei nicht öffnen";
    6. exit;
    7. }
    8. if (!fwrite($handle, $text)) {
    9. return "Konnte nicht in Datei schreiben";
    10. exit;
    11. }
    12. fclose($handle);
    13. } else {
    14. return "Datei ist nicht schreibbar";
    15. }
    16. }
    17. // SOAP-Client initialisieren
    18. $client = new SoapClient('https:/LINK.asmx?WSDL',
    19. array(
    20. 'location' => 'http://LINK.asmx',
    21. // ggf. Komprimierung erlauben (wenn 'GetEmergencyDatasCompressed' genutzt wird)
    22. // 'compression' => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP,
    23. 'connection_timeout' => 10,
    24. // Tracing aktivieren (wird für __getLastRequest benötigt)
    25. 'trace' => 1,
    26. 'exceptions' => 0
    27. ));
    28. // Informationen abfragen (mögliche Optionen: 'GetEmergencyDatas' oder 'GetEmergencyDatasCompressed')
    29. $response = $client->GetEmergencyDatas();



    die gespeicherten daten sehen wie folgt aus

    XML-Quellcode

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. -<soap:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    3. -<soap:Body>
    4. -<GetEmergencyDatasResponse xmlns="http://Link/">
    5. -<GetEmergencyDatasResult>
    6. -<EmergencyData>
    7. <MissionID>4028639</MissionID>
    8. <MissionCreatedAt>2016-08-02T08:49:46.371</MissionCreatedAt>
    9. <MissionCreator>DATEN</MissionCreator>
    10. <MissionNumber>DATEN</MissionNumber>
    11. <MissionOwnerDistrictName>DATEN</MissionOwnerDistrictName>
    12. <MissionAssignedDistrictName>DATEN</MissionAssignedDistrictName>
    13. <MissionOwnerGroundControlName>DATEN</MissionOwnerGroundControlName>
    14. <MissionAssignedGroundControlName>DATEN</MissionAssignedGroundControlName>
    15. <MissionCodeName>DATEN</MissionCodeName>
    16. <MissionCodeDescription>DATEN</MissionCodeDescription>
    17. <MissionClassName>DATEN</MissionClassName>
    18. <MissionClassDescription>DATEN</MissionClassDescription>
    19. <MissionNumberOfPatients>1</MissionNumberOfPatients>
    20. <MissionHint>DATEN</MissionHint>
    21. .
    22. .
    23. .
    Versuch mal etwas in diese Art:

    VB.NET-Quellcode

    1. ​for each emergencyData in sClient.GetEmergencyDatas
    2. ListBox1.Items.Add(emergencyData.MissionID)
    3. next

    Du musst halt etwas probieren, ohne davor zu sitzen ist das schwierig. Aber grundsätzlich werden dir passende Objekte generiert und GetEmergencyDatas müsste diese Objekte schön zurückgeben.
    Schau einfach was dir vorgeschlagen wird.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.