Ankündigung

Einklappen
Keine Ankündigung bisher.

Request mit Simple XML aufrufen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Request mit Simple XML aufrufen

    Hallo,

    ich versuche gerade einen Webservice mit simplexml zu laden.

    Der Webservice kommt via wdsl.
    Hier mein Ansatz.


    PHP-Code:
    <?php
    ...
     
    $wsReturn $soapclient-> __getLastResponse();

    .....

    $xml simplexml_load_string($wsReturn);  
                                      
            if(
    $xml) {    //Prüfen, ob Datei Fehler enthielt
    ?>
            <table>
                <tr>
                    <td>&Uuml;berschrift</td>
                    <td><?php echo $xml->Titel ?></td>
                </tr>
                <tr>
                    <td>&nbsp;</td>
                    <td><?php echo $xml->beschreibung ?></td>
                </tr>
                
            </table>
    <?php    
            
    } else {
                echo 
    '        <p>Die Datei names '$wsReturn .' konnte nicht geöffnet werden</p>';
            }
    Die Ausgabe sieht wie folgt aus.

    Die Datei names

    DER KOMPLETTE LastResponse wir ausgegeben.

    konnte nicht geöffnet werden.
    Kann mir jemand sagen, wo der Fehler ist?

    Danke J.J.

  • #2
    $wsReturn enthält einen XML String, keinen Dateinamen...
    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      Hallo, ja das weiß ich. Aber die Funktion heißt doch $xml = simplexml_load_string ();

      Okay die erwartet einen Dateinnamen. Ich habe aber nur dieses String (Response).
      Gibt es dafür keine Lösung?

      Kommentar


      • #4
        schon mal mit simplexml_load_file() versucht die erwartet einen Dateinamen und gibt dir ein XML-Objekt zurück.

        Und mit dieser Funktion kannst du dir wenn nötig ein Array daraus machen: http://codingforums.com/showthread.php?t=87283
        "My software never has bugs, it just develops random features."
        "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

        Kommentar


        • #5
          Zitat von J.J. Beitrag anzeigen
          Hallo, ja das weiß ich. Aber die Funktion heißt doch $xml = simplexml_load_string ();

          Okay die erwartet einen Dateinnamen. Ich habe aber nur dieses String (Response).
          Gibt es dafür keine Lösung?
          Du hast ein Verständnisproblem, dein Aufruf $soapclient-> __getLastResponse(); liefert dir einen XML-String, keinen Dateinamen.

          Speicher den XML String auf deinem Server unter einem beliebigen Namen, DANN kannst du diesen auch verwenden.

          (oder war die Frage nicht "warum wird der komplette XML String ausgegeben, obwohl ich in der Fehlermeldung einen Dateinamen ausgeben will"?)
          Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

          Kommentar


          • #6
            Hallo,

            Zitat von lstegelitz Beitrag anzeigen
            Du hast ein Verständnisproblem, dein Aufruf $soapclient-> __getLastResponse(); liefert dir einen XML-String, keinen Dateinamen.

            Speicher den XML String auf deinem Server unter einem beliebigen Namen, DANN kannst du diesen auch verwenden.
            Eine Anfrage beim Webservice ändert sich doch mit jeder Anfrage. Diese dann als Datei speichern ... ???

            schon mal mit simplexml_load_file() versucht
            Ja , der braucht auch einen Filenamen.

            Description
            object simplexml_load_file ( string $filename [, string $class_name = "SimpleXMLElement" [, int $options = 0 [, string $ns [, bool $is_prefix = false ]]]] )

            Convert the well-formed XML document in the given file to an object.
            Danke für Eure Mühe. Ich probiere & suche weiter.

            Kommentar


            • #7
              Vielleicht schreibst du nochmal exakt darnieder, was du über mit

              "Kann mir jemand sagen, wo der Fehler ist?"
              überhaupt meinst?
              Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

              Kommentar


              • #8
                Hallo lstegelitz,

                Das steht im ersten Post. Der dort angegebene Code gibt mir folgendes aus.

                Die Datei names "jetzt kommt die komplette Ausgabe hintereinander weg & unformatiert von Webservice als Response"
                konnte nicht geöffnet werden.
                Also die Datei gibt es nicht klar, aber der String- Inhalt wird komplett angezeigt.

                Meine Frage nach dem Fehler ist, dass ich nicht weiß wo der Fehler ist.
                Ich weiß aber , dass nicht den gesamten Inhalt brauche, sondern nur einen Teil.
                Ich weiß auch, ich habe keine Datei, sondern einen Response des Webservice, der sich ständig ändert.

                Frage, Wie komme ich an die einzelnen Elemente des Response ran. Was für eine Funktion brauche ich? Wie muss die aussehen?

                simplexml_load_response_vom_webservice ($string_response)

                Ich hoffe, mir kann jemand helfen.

                Gruß JJ

                Kommentar


                • #9
                  Zitat von J.J. Beitrag anzeigen
                  Hallo, ja das weiß ich. Aber die Funktion heißt doch $xml = simplexml_load_string ();

                  Okay die erwartet einen Dateinnamen.
                  Nein, tut sie nicht.

                  Der dort angegebene Code gibt mir folgendes aus.
                  Die Datei names "jetzt kommt die komplette Ausgabe hintereinander weg & unformatiert von Webservice als Response"
                  konnte nicht geöffnet werden.
                  Also die Datei gibt es nicht klar, aber der String- Inhalt wird komplett angezeigt.
                  Natürlich, aber das ist ja deine eigene Fehlermeldung - und dafür, dass du einen komplett falschen Schluss ziehst, können weder PHP noch SimpleXML etwas.

                  simplexml_load_string hat wohl false zurückgegeben, und deine Fehlermeldung „Datei ... konnte nicht geöffnet werden“ als Reaktion darauf ist schlicht und einfach nicht der Wahrheit entsprechend.

                  Stelle bitte das error_reporting auf E_ALL und display_errors auf 1, dann wird dir simplexml_load_string auch mitteilen, was es an deinem XML nicht mag.

                  Und RTFM, bitte: PHP: Dealing with XML errors - Manual
                  [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

                  Kommentar


                  • #10
                    Zitat von ChrisB Beitrag anzeigen
                    Stelle bitte das error_reporting auf E_ALL und display_errors auf 1, dann wird dir simplexml_load_string auch mitteilen, was es an deinem XML nicht mag.
                    Hallo Chris,

                    die Antwort ist
                    Warning: simplexml_load_string() expects parameter 1 to be string, object given in line...
                    da steht
                    $xml = simplexml_load_string($wsReturn);

                    Nun bin ich genauso schlau/dumm wie vorher.

                    Kommentar


                    • #11
                      object given?

                      bitte einmal einen var_dump von $wsReturn posten (und zwar direkt nach dem Aufruf von __getLastRequest)
                      Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                      Kommentar


                      • #12
                        Hmmm

                        var_dump von $wsReturn
                        parameter wsReturn (var_dump):

                        string(363102) "
                        0444497false dann kommen 99 Zeile oder so reiner Text
                        $result = $soapclient-> MethodMultiQuery(new SoapParam($soapstruct,"alleMultiQueryausA"));
                        $wsReturn = $soapclient-> __getLastResponse();

                        PHP-Code:
                        parameter result (var_dump):

                        object(stdClass)#9 (4) {
                          
                        ["fromRow"]=>
                          
                        string(1"0"
                          
                        ["numRows"]=>
                          
                        string(4"4444"
                          
                        ["totalRows"]=>
                          
                        string(2"97"
                          
                        ["ein_node_name"]=>
                          array(
                        97) {
                            [
                        0]=>
                            
                        object(stdClass)#10 (3) {
                              
                        ["node_aa"]=>
                              
                        string(5"false"
                              
                        ["ein_node_name"]=>
                              
                        object(stdClass)#11 (9) {
                                
                        ["ein_node_name"]=>
                                
                        object(stdClass)#12 (14) {
                                  
                        ["ein_node_name"]=>
                                  
                        string(36"text"
                                  
                        ["ein_node_name"]=>
                                  
                        string(3"102"
                                  
                        ["ein_node_name"]=>
                                  
                        string(16"text"
                                  
                        ["ein_node_name"]=>
                                  
                        string(2"text"
                                  
                        ["ein_node_name"]=>
                                  
                        string(7"text"
                                  
                        ["ein_node_name"]=>
                                  
                        string(0""
                                  
                        ["ein_node_name"]=>
                                  
                        string(13"text"
                                  
                        ["ein_node_name"]=>
                                  
                        NULL
                                  
                        ["ein_node_name"]=>
                                  
                        string(3"282" 

                        Sorry ist etwas abgeändert. Ich darf den Aufruf nicht veröffentlichen.

                        Aber vielleicht hilft es ja trotzdem.

                        Kommentar


                        • #13
                          Was mich stutzig macht:

                          Laut Doku sollte SoapClient::__getLastResponse() einen String liefern, deine Fehlermeldung aber lautet: Warning: simplexml_load_string() expects parameter 1 to be string, object given in line.

                          Heisst für mich: Du bekommst keinen String ODER du setzt nicht den Rückgabewert von __getLastResponse in simplexml_load_string ein.

                          Der Vardump von $wsReturn zeigt string an.. oder doch nicht? Wovon ist der var_dump, den du gepostet hast (DAS ist nämlich ein Objekt!)
                          Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                          Kommentar

                          Lädt...
                          X