Ankündigung

Einklappen
Keine Ankündigung bisher.

NuSoap-Responses kommen ab gewisser Größe nur mit dem Fehler "Mismatched tag" an

Einklappen

Neue Werbung 2019

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

  • NuSoap-Responses kommen ab gewisser Größe nur mit dem Fehler "Mismatched tag" an

    Hallo,

    Ich habe eine PHP-Anwendung welche NuSoap für die Kommunikation zwischen Frontend und Backend benutzt.

    Aktuell laufen die Entwicklungs-Version und die produktive Version am gleichen Server.

    Nun soll die Entwicklungs-Version auf einen anderen Server kommen.

    Doch es gibt ein Problem:
    Die Anwendung läuft zwar ganz normal, doch wenn die Responses größer werden, dann tritt folgender Fehler auf:

    Error in Frontend-to-Backend-Client! XML error parsing SOAP payload on line 574: Mismatched tag


    Das Backend arbeitet die Requests ganz normal ab und versucht auch die Responses an das Frontend zu senden,
    doch im Frontend kommt das ganze nur als Fahler an.

    Es scheint ziemlich eindeutig an der Größe der Responses zu liegen.
    Ich habe zum Beispiel eine Abfrage wo ich die Spaltenanzahl für eine Tabelle bestimmen kann. Bis 150 Zeilen ist alles normal. Bei 200 tritt der Fehler auf.
    So spielt es sich auch bei anderen Abfragen ab.
    Ab einer gewissen Response-Größe tritt der Fehler auf.


    Ich finde keine wirkliche Lösung.
    Google war bisher auch keine Hilfe.

  • #2
    Und wie sieht der Payload aus?

    Kommentar


    • #3
      Entschuldigung, war im Urlaub ^^"

      Zitat von hellbringer Beitrag anzeigen
      Und wie sieht der Payload aus?
      Ich schätze bis ca 1500 Byte geht alles gut.
      Dann kommt der "Misamtched Tag"-Fehler.

      Auf meinem anderen Server funktioniert das ganze auch bei 100 facher Payload noch einwandfrei.

      Kommentar


      • #4
        Ich habe das ganze nun auch mit PHP SoapServer und SoapClient ausprobiert.

        Hier tritt das entsprechende Gegenstück zu NuSoap's "Mismatched Tag" auf, nämlich
        "looks like we got no xml document".

        Ich habe mit __getLastResponse() die Response ausgelesen und sie endet tatsächlich mittendrin.

        Sie sieht in etwa so aus:

        PHP-Code:
                 <?xml version="1.0" encoding="UTF-8"?> <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="urn://192.168.26.27/ami ... ... ... </env:Body></env:Envelop
        Die Response endet im Grunde mitten im im "Envelope".


        Da das ganze sowohl bei NuSoap als auch bei SoapServer/SoapClient auftritt muss es wohl um irgendeine php.ini-Einstellung gehen vermute ich, aber welche könnte soetwas verursachen? (wie gesagt nur eine Vermutung)



        EDIT:

        Ich habe eine neue sehr interessante Erkenntnis erlangt.

        Laut dem was ich in "__getLastResponse()" sehe ist die Response immer vollständig, aber bei "Envelope" wird immer abgeschnitten, wie im Beispiel oben. Immer an der gleichen Stelle.

        Ist die Response klein genug, so wird dieser letzte Teil mitten im Envlope nicht weggeschnitten.

        Es handelt sich um eine Anwendung die auf einem anderen Server einwandfrei funktioniert. Doch auf dem neuen Server funktioniert das Soap-Nachrichten verschicken einfach nicht so wie es sollte.

        Kommentar


        • #5
          Fehlt aus der Mitte ein Teil oder nur die letzten zwei Byte? Also statt: </env:Envelope> -> </env:Envelop

          Kommentar


          • #6
            Zitat von erc Beitrag anzeigen
            Fehlt aus der Mitte ein Teil oder nur die letzten zwei Byte? Also statt: </env:Envelope> -> </env:Envelop
            In der Mitte fehlt nichts. Nur das Ende.
            Immer ab dem "e" von "Envelope".

            Die Daten sind vollständig in der Response, aber ab einer gewissen Größe werden immer die letzten paar Bytes abgeschnitten.


            UPDATE:
            Ich kann das ganze nun auf ein eigenes PHP-File welches fast nur aus require_once besteht zurückführen.
            Ich bin endlich kurz vor dem Durchbruch glaube ich ^^"

            Kommentar


            • #7
              Will jemand wissen wie ich den Fehler behoben habe?

              Das ganze ergibt aber überhaupt keinen Sinn. Nicht einmal ein bisschen.


              In meinem SoapServer-PHP-File hatte ich ein require_once.

              PHP-Code:
              require_once "includes.php"
              In diesem File hatte ich ein weiteres require_once

              PHP-Code:
              require_once "config.php" 

              Sobald ich dieses require_once auskommentierte funktionierten die Soap-Responses.
              Also ging ich natürlich im File config.php auf Fehlersuche.

              Am Ende stand nur mehr folgendes im config.php-File:
              PHP-Code:
                <?php return; ?>
              Doch auch das behob den Fehler nicht.
              Der Fehler blieb bestehen.
              Nur das Auskommentieren des require_once funktionierte.
              Den require_once-Pfad den ich angab war aber korrekt. Ich prüfte das ganze einfach mit einem echo in config.php und führte dann das include.php aus.


              Ich habe nun einfach include.php und config.php vereint in include.php.
              Wenn etwas einmal so wenig Sinn ergibt, dann nehm ich lieber die dümmste Lösung bevor ich Wochenlang diesen dummen Fehler verstehe ^^"


              Wenn mir natürlich jemand diesen Zustand erklären kann, dann gerne

              Kommentar


              • #8
                Zitat von StefEAG Beitrag anzeigen
                Am Ende stand nur mehr folgendes im config.php-File:
                PHP-Code:
                 <?php return; ?>
                Doch auch das behob den Fehler nicht.
                Der Fehler blieb bestehen.
                Vor dem PHP Tag stehen zwei Leerzeichen (oder etwas anderes) und es fehlen zwei Zeichen in den Responses. Ich glaube nicht, dass das ein Zufall ist...

                Kommentar

                Lädt...
                X