[NEWSboard IBMi Forum]
Seite 2 von 2 Erste 1 2

Hybrid View

  1. #1
    Registriert seit
    Jan 2012
    Beiträge
    1.237
    Erst mal vielen Dank für die Tipps. Ich habe jetzt einige Verständnisprobleme gelöst, aber mein eigentliches Problem existiert noch. Ich habe deshalb mal einen Testfall produziert, den ich im interaktiven SQL zum Laufen bekomme, den ich im embedded SQL aber nicht zum Laufen bekomme. (Der Testfall enthält nichts firmenspezifisch, jeder von euch müsste den bei sich zum Laufen bringen können.)

    Da die Beispiele HTML beinhalten, kann ich sie in diesem Forum-Editor nicht posten. Klappt jedenfalls bei mir nicht, selbst wenn ich "HTML-Code einfügen" benutze. Deshalb die Beispiele als Anhang an diesen Post.

    Wenn man das SQL ausführt, sieht man, dass in der Variablen y das komplette XML-Dokument steht. Einschließlich des XML-Headers. Wenn man dann das xmlparse ausführt, sieht man, dass jetzt nur noch der Value-Teil des XML-Dokumentes übrigbleibt. Das ist alles genauso, wie ich es mir vorstelle.


    Das möchte ich auch im embedded SQL machen. Da muss ich die Variablen aber im RPG-Format deklarieren. Möglicherweise habe ich da ein Problem. Im Debugger sieht man, dass die Variable responseHeaderDoc den korrekten Wert (also das gesamte SQL-Dokument) enthält. Ob die interne Codierung richtig ist, weiß ich natürlich nicht. Im Debugger ist es jedenfalls lesbar.

    Wenn ich dann das xmlparse ausführe, um nur den Values Teil des XML zu bekommen, klappt das nicht. Der SQLCOD ist -16168.



    Angehängte Dateien Angehängte Dateien

  2. #2
    Registriert seit
    Jan 2012
    Beiträge
    1.237
    Leider klappt das ganze noch nicht so, wie ich mir das vorstelle, Ich wollte die SQL-Lösung von Andreas etwas auseinanderziehen, damit es übersichtlicher wird. Außerdem möchte ich den Response nicht in einer Extra-Datei speichern, sondern lieber in einer Hostvariablen des SQLRPGLE-Programms ablegen.

    Jetzt habe ich anscheinend aber ein Zeichensatzproblem. Ich speichere den ResponseHeader zunächst in einem Clob, das folgendermaßen deklariert ist:
    Code:
    dcl-s responseHeaderClobDS sqltype(CLOB:100000);
    Dann speichere ich den Clob-Inhalt in eine "normale" Variable vom Typ varucs2:
    Code:
    dcl-s httpHeaderString varucs2(2000); 
    httpHeaderString = %subst(responseHeaderClobDS_data:1:responseHeaderClobDS_len);
    Jetzt lese ich aus dem Header die gewünschten Werte:
    Code:
    exec sql select * into :responseCode, :responseMsg
        from xmltable('/httpHeader' passing xmlparse(document :httpHeaderString)
              columns resCode varchar(128) path '@responseCode',
                   resMsg varchar(128) path 'responseMessage') msg;
    Dabei bekomme ich den SQL Fehlercode -16168. Der erweiterte Fehlertext (für die aufgetretene Fehlerart 7) ist: XML-Deklaration in XML-Dokument ungültig. ... Angegebene Codierung wird nicht unterstützt oder interne Codierung weicht von externer Codierung ab.

    Ich glaube, dass das an dem Beginn des XML-Strings liegt. Dort steht ?xml version="1.0" encoding="UTF-8" drin. Wenn ich diesen Teil manuell aus dem XML-String entferne, liefert mir die xmltable-Funktion die korrekten Werte.

    Ich dachte, wenn ich die HeaderString Variable ucs2 deklariere, müsste das auch UTF-8 umfassen.

    Hat jemand eine Idee?

    Dieter

  3. #3
    Registriert seit
    Jan 2012
    Beiträge
    1.237
    Hallo Baldur, wir haben eben fast zeitgleich gepostet. Ich habe nochmal einen Test gemacht und das @-Zeichen einfach weggelassen. Ich hätte dann eine andere Fehlermeldung erwartet. Aber ich bekomme immer noch die gleiche Fehlermeldung "XML-Deklaration ... ungültig".
    Ich habe wahrscheinlich ein Zeichensatzproblem, aber es liegt nicht (allein) am @-Zeichen, denke ich.

    Andreas hat in seinem Post noch geschrieben:
    Du kannst dir aber auch eine Tabelle mit einer Auflistung aller HTTP-Headerinformationen ausgeben lassen. Darin ist dann u.a. auch der HTTP Code enthalten.

    Heißt das, dass es da noch eine einfachere Lösung gibt?


Similar Threads

  1. REST Webservices / Verwendung von SYSTOOLS
    By dschroeder in forum NEWSboard Programmierung
    Antworten: 25
    Letzter Beitrag: 14-02-18, 12:11
  2. SYSTOOLS / HTTPGETBLOB Verhalten
    By Bratmaxxe in forum NEWSboard Programmierung
    Antworten: 15
    Letzter Beitrag: 21-12-17, 09:29
  3. SYSTOOLS.URLENCODE
    By KM in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 25-04-17, 10:44
  4. SYSTOOLS.JSON2BSON
    By rischer in forum IBM i Hauptforum
    Antworten: 28
    Letzter Beitrag: 02-10-15, 12:36
  5. Spools Status Fin
    By pille in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 28-11-02, 10:37

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •