[PHP] [JAVA] [XML] [JSON] - Unbekannte Übergabe verläuft fehlerhaft

  • Servus zusammen,

    ich habe folgende Situation :
    - Quellcode von Java leider nur teilweise verfügbar, darf außerdem nicht veröffentlicht werden. (evtl. in Teilen wenn ich namen unkenntlich mache)
    - Ein PHP Backend, welches an das Java Programm Daten per JSON übergibt. Diese JSONS funktionieren bereits teilweise und sind immer in "data"
    - Ein XML String, welchen ich in die JSON einfügen muss. Funktioniert ebenfalls teilweise (solang keine " oder ' vorhanden sind)

    Nun muss ich eine Funktion bauen bei der ich nicht um die " herum komme.
    Unten einige Tests die ich bereits gefahren habe und deren Ergebnisse. Natürlich sind das nur die, die ich mitgeschrieben hab.
    Es wurde bereits weit mehr getestet als Dokumentiert. Es handelt sich um PHP.

    //$val = "dasisteintestnurmiteinemstring";                                                              Fehler in XMLWrapper - Content is not allowed in prolog
    //$val = "<test></test>";                                                                               Fehler in XMLWrapper - Expected elements are timetable, interval
    //$val = "<timetable><interval type=week><from>10</from><to>12</to></interval></timetable>";            Fehler in XMLWrapper - Open quote is expected for attribute type
    //$val = "<timetable><interval type=\"week\"><from>10</from><to>12</to></interval></timetable>";        Fehler in ResponseWrapper - Unexpected Char 119 (w)
    //$val = "<timetable><interval type=\\\"week\\\"><from>10</from><to>12</to></interval></timetable>";    Fehler in ResponseWrapper - Invalid token=EOF, expected are { [ STR NUM TRUE FALSE NUL]}   


    Im inneren des Java ist es wie folgt aufgebaut ResponseWrapper -> XMLWrapper -> werte setzen und Files schreiben.
    Was ebenfalls getestet wurde :
    - Anführungszeichen ganz weg lassen
    - Mehr escapes
    - Weniger escapes
    - Alles in Unicode Character umwandeln was irgendwie komisch ist
    - json encode in php (lasse ich aus gründen des leichteren verständnissses für die Tests grad weg)

    Als Standartheader nutze ich :
    header("HTTP/1.1 200 OK");
    header('Content-Type: application/json; charset=utf-8');

    Nachtrag 1 :
    JSON response der PHP sieht ungefähr so aus (ist die Ausgabe des letzten Beispiels ....  type=\\\"week\\\"><fr....)

    { "data" : "<timetable><interval type=\"week\"><from>10</from><to>12</to></interval></timetable>" }

    -

    2 Mal editiert, zuletzt von Nachid (22. März 2024 um 16:50)

  • Ich habe tatsächlich ehrlich gesagt noch nicht ganz begriffen was nun an was genau übergeben wird und wer nun genau den Fehler schmeißt.
    ich sehe aber deine Beispiele und kann dazu etwas sagen.

    $val = "<timetable><interval type=\"week\"><from>10</from><to>12</to></interval></timetable>";        Fehler in ResponseWrapper - Unexpected Char 119 (w)


    Das ist valider PHP-Code mit korrektem escape. Dieser erzeugt einen String, welcher korrekt formatierten XML-Code (mal von der XML-Deklaration abgesehen) als Variableninhalt erzeugt.
    Alternativ würde auch folgendes den gleichen String erzeugen:

    Code
    $var = '<timetable><interval type="week"><from>10</from><to>12</to></interval></timetable>'

    { "data" : "<timetable><interval type=\"week\"><from>10</from><to>12</to></interval></timetable>" }

    Das ist volkommen valider JSON-Code mit korrektem escape.

    Wer schmeißt jetzt nun den Fehler und was und in welcher Form wird da die Eingabe erwartet?
    Ich sehe korrekten PHP Code, welcher korrekten XML-Code erzeugt und sehe korrekten JSON-Code welcher den XML-String korrekt enthält.

  • Danke für deine Unterstützung.
    Nachdem ich in Java die Funktion nachgebaut habe, habe ich festgestellt das das bei mir auch alles i.O. war.
    Tatsächlich wird der Request kurz nacheinander auf 3 untereinanderliegende Stufen gestellt, zur Vorstellung :

    /test123/test1
    /test123/test2
    /test123/test3

    Ich war nun fest der Überzeugung, der Fehler würde in test1 geworfen werden. Da mein JSON aber wirklich korrekt war und auch korrekt geparst wurde,
    (erst durch Java dann durch JSON, dann durch den XML Parser) musste ich den Fehler dann wo anders suchen.


    Durch die minimale Verzögerung innerhalb der Requests hat es sehr schwer gemacht, das aus den Logs zu finden - aber am Ende lag es praktisch am Request
    test2....

    Vielen Dank trotzdem AspirinJunkie

    -