[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Jan 2012
    Beiträge
    1.199
    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

  2. #2
    Registriert seit
    Jan 2012
    Beiträge
    1.199
    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, 11:11
  2. SYSTOOLS / HTTPGETBLOB Verhalten
    By Bratmaxxe in forum NEWSboard Programmierung
    Antworten: 15
    Letzter Beitrag: 21-12-17, 08:29
  3. SYSTOOLS.URLENCODE
    By KM in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 25-04-17, 09:44
  4. SYSTOOLS.JSON2BSON
    By rischer in forum IBM i Hauptforum
    Antworten: 28
    Letzter Beitrag: 02-10-15, 11:36
  5. Spools Status Fin
    By pille in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 28-11-02, 09:37

Berechtigungen

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