[NEWSboard IBMi Forum]
Seite 2 von 4 Erste 1 2 3 ... Letzte
  1. #13
    Registriert seit
    Feb 2001
    Beiträge
    20.329
    'testüser' ist die einfach 1:1-Übersetzung des XML-Inhaltes in EBCDIC.
    'ü' ist die UTF-8-Entsprechung des 'ü'.
    D.h., dass der XML-INTO keine Übersetzung von 1208 in EBCDIC (z.B. 273) durchführt.
    Schau dir die XML mal mit WRKLNK im Hex-Mode an, dann solltest du die ASCII-Entsprechung der 2 Zeichen sehen können.
    Wenn die XML-Datei bereits 1208 hat, dann ist das ja auch korrekt.
    Jetzt ist nur die Frage, warum die Übersetzung in 273 nicht klappt.

    Gib mal CCSID=UCS2 an.
    Dann sollte der XML-Into eigentlich von UTF-8 in UCS2 umwandeln und dann in deine SBCS-Felder wieder in die JOB-CCSID z.B. 273.
    Ansonsten definiere die Felder mal als UCS2-Felder.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  2. #14
    Registriert seit
    Oct 2016
    Beiträge
    24
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Schau dir die XML mal mit WRKLNK im Hex-Mode an, dann solltest du die ASCII-Entsprechung der 2 Zeichen sehen können.
    Magst du mir verraten wie ich dies tun kann, 'wrklnk' + F4 zeigt keine Option für HEX und wenn ich mit 5 mir die Datei anzeigen lasse, scheint es auch keine Option zu geben.

    Zitat Zitat von Fuerchau Beitrag anzeigen
    Gib mal CCSID=UCS2 an.
    Dann sollte der XML-Into eigentlich von UTF-8 in UCS2 umwandeln und dann in deine SBCS-Felder wieder in die JOB-CCSID z.B. 273.
    Habe ich gemacht, hat nichts gebracht, der Username ist immernoch inkorrekt.
    Ich kann dir leider gerade nicht folgen, welches Feld soll ich als ucs2 definieren?
    "Mit dem ersten Glied ist die Kette geschmiedet. Wenn die erste Rede zensiert, der erste Gedanke verboten, die erste Freiheit verweigert wird, dann sind wir alle unwiderruflich gefesselt." - Cpt. Jean-Luc Picard

  3. #15
    Registriert seit
    Feb 2001
    Beiträge
    20.329
    Die DS WebserviceRequest. Hier sind die Felder alle als SBCS definiert, also einfacher Zeichensatz.
    Allerdings weiß ich nicht, wie im Full-Free ein UCS2-Feld definiert wird, im alten Format ist das Feld-Typ "C".
    Zur Weiterverarbeitung der Daten ist dann ggf. von dir ein %char (UCS2->SBCS) oder %ucs2 (SBCS->UCS2) einzubauen.

    Hex-Anzeige:
    WKRLINK, Auswahl 5, F10 (Steht am unteren Bildschirmrand).

    Nachtrag:
    Bei meinem letzten XML-INTO gebe ich auch keine CCSID an:
    XMLOption = ' trim=all' // Leerzeichen am Anfang/Ende
    + ' allowmissing=yes' // fehlende Knoten ignorieren
    + ' allowextra=yes' // zusätzliche Knoten ignorieren
    + ' countprefix=cnt' // Zählervariable für Arrays
    + ' case=convert' // ungültige Zeichen in "_" konvertieren
    + ' doc=file' // XML aus Datei lesen
    ;
    und es funktioniert.
    Dann habe ich nur noch die Vermutung, dass dein Job auf CCSID 65535 (*HEX) steht. Dann funktioniert das wohl auch nicht korrekt.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  4. #16
    Registriert seit
    Oct 2016
    Beiträge
    24
    Ah ok, das kann ich anscheinend einfach mit ucs2(länge) machen, also quasi wie bei char.
    Werde das dann mit WRKLNK morgen einmal testen, muss gleich Feierabend machen.

    Hier sonst enmal der plain xml string, welcher als response zurückkommt: Link


    Ich danke euch allen dann definitv für die heutige Hilfe, hoffentlich finden wir morgen dann eine Lösung : )

    Allen ein schönen Feierabend.
    "Mit dem ersten Glied ist die Kette geschmiedet. Wenn die erste Rede zensiert, der erste Gedanke verboten, die erste Freiheit verweigert wird, dann sind wir alle unwiderruflich gefesselt." - Cpt. Jean-Luc Picard

  5. #17
    Registriert seit
    Feb 2001
    Beiträge
    20.329
    Der Response ist da schon zumindest im hinteren Teil UTF-8. Die %XX-Werte sind nicht UTF-8 sonder nur (einfacher) HTML-Code.
    Wichtig ist, dass die IFS-Datei die CCSID 1208 aufweist, was du über WRKLNK und dann "Anzeige Attribute" prüfen kannst.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  6. #18
    Registriert seit
    Oct 2016
    Beiträge
    24
    Morgen,

    die CCSIDs der XML Dateien ist 1208. Die XML wird bereits mit dieser CCSID erstellt.

    Wenn ich mit chgjob + F4 reingehe sehe ich folgende Sprachattribute:
    Code:
     Sprachen-ID  . . . . . . . . . . LANGID         DEU         
     Landes- oder Regions-ID  . . . . CNTRYID        DE          
     Zeichensatz-ID . . . . . . . . . CCSID          273
    Das temporäre ändern auf die CCSID 1141 wie auf der vorigen Seiten beschrieben brachte leider auch keine Lösung...

    Wie sieht es denn aus wenn einer von euch den XML Response einmal einließt, könnte man das Problem dann nicht eventuell weiter eingrenzen? Dafür muss ja eigentlich nur die Webservice DS, XMLOPTIONS und das XML INTO aus meinem geteilten Quellcodeausschnitt genommen und compiliert werden. Den Pfad zur XML kann man dann ja selber hinterlegen.

    Wäre dazu jemand bereit?

    EDIT: Eben auch per WRKLNK mir die HEX Werte angeschaut da steht dann auch wie du bereits gemeint hast C2BC drinn für die beiden Zeichen(ü).
    "Mit dem ersten Glied ist die Kette geschmiedet. Wenn die erste Rede zensiert, der erste Gedanke verboten, die erste Freiheit verweigert wird, dann sind wir alle unwiderruflich gefesselt." - Cpt. Jean-Luc Picard

  7. #19
    Registriert seit
    Feb 2001
    Beiträge
    20.329
    Nun, wenn man sucht wird man fündig:
    http://www.code400.com/forum/forum/i...n-utf-8-string

    So, wie es aussieht, wird beim XML-Into UTF-8 native gar nicht unterstützt.
    "The following Unicode CCSIDs are supported: 1200, 13488, 17584."

    Du brauchst dich also nicht weiter zu bemühen.
    Was du nun also brauchst ist eine Konvertierung an anderer Stelle.

    Hierzu musst du deinen SQL modifizieren:

    Ggf. benötigst du auch einen Doppelcast, da ich nicht weiß, was denn die SQL-Funktion als CCSID-Typ zurückgibt.

    cast(cast(cast(systools.httpgetclob(...) as blob) as clob(1M, 1208)) as clob(1M, 1200))

    Somit solltest du die XML-Datei dann als UTF-16 (CCSID 1200) erstellt haben, was vom XML-Into unterstützt wird.
    Statt clob(1M, 1200) funktioniert ggf. auch NCLOB.

    Alternativ kannst du auch per QSH den Befehl "iconv" aufrufen. Mit diesem kannst du die IFS-Datei in eine andere CCSID konvertieren.

    Bleibt halt nur die Frage offen, warum die IBM die 1208 nicht unterstützt. Ggf. ab V7R3ff?
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  8. #20
    Registriert seit
    Aug 2014
    Beiträge
    179
    Schick mir bitte die xml Datei per Mail, dann schaue ich mir das auf meinem System an

    rainer_ross@web.de

  9. #21
    Registriert seit
    Aug 2001
    Beiträge
    2.883
    Wenn Ihr auf den XML-INTO komplett verzichten würdet, und den Webservice in Verbindung mit XMLTABLE verwenden würdet, hättet Ihr Euch wahrscheinlich mehrere Tage Arbeit gespart.
    SQL erwartet zum einen Per Default XML in UTF-8 und zum anderen kann SQL UTF-8 problemlos verarbeiten und in EBCDIC konvertieren.

    Einfaches Beispiel:
    Code:
    Exec SQL
     Select  *  into :YourDS
     From XMLTable('/Start/Position' 
            Passing XMLParse(DOCUMENT HTTPGetCLOB('http://...',  ''))  
            Columns MyCol1   VarChar(30) Path '/Pfad...',
                    MyCol2   VarChar(30) Path '/Pfad....',
                     ...) a;
    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  10. #22
    Registriert seit
    Oct 2016
    Beiträge
    24
    Mhm hatte nichts gefunden. Hatte aber auch nicht nach xml sax gesucht und vllt. hätte ich da dann auch google nutzen sollen.Ich. lese das sobald ich wieder am PC bin, am Handy gerade zu anstrengend.

    XML_Table werde ich nachher auch testen, hatte vorhin auch einen Artikel auf deceloperWork gefunden zudem Thema, und danke für das Beispiel.

    @Rainer Ross: Danke für das Angebot, ich teste dann aber erstmal xml_table, vllt. Löst das ja achon das Problem.
    "Mit dem ersten Glied ist die Kette geschmiedet. Wenn die erste Rede zensiert, der erste Gedanke verboten, die erste Freiheit verweigert wird, dann sind wir alle unwiderruflich gefesselt." - Cpt. Jean-Luc Picard

  11. #23
    Registriert seit
    Oct 2016
    Beiträge
    24
    Moin,
    ich bin zum testen gekommen. Ich habe das auf meinen Fall modifizierte SQL erstmal interaktive(mit DBeaver) abgesetzt. Das klappt soweit auch schon super:
    Code:
    ID DISPLAY_NAME      ORT         PLZ    USERNAME
    3    TestUser4       Hamburg    22143    testuser4
    Zur Info warum plötzlich ein andere Username genutzt wurde(testuser4). Ich wollte erstmal die Funktion an sich testen, daher habe ich einen User genommen wo kein Umalut enthalten ist um sicher zu sein das falls es Probleme gibt dies nicht an einem Umlaut liegt.

    Nun habe ich das mit embedded SQL probiert.
    Code:
    dcl-ds WebserviceRequest qualified;
               id varchar(10);
               display_name varchar(100);
               ort varchar(100);
               plz varchar(100);
               username varchar(10);
    end-ds;  
    
    exec sql set :query = systools.urlencode(:query,'UTF-8');
    myurl += query;             
    
    
    EXEC SQL
     SELECT  *  INTO :webservicerequest
     FROM xmltable('/PagedListViewModelOfuserNcCATIYq/items/user'
            passing xmlparse(document httpgetclob(:myurl, :myheader))
            columns
              id VARCHAR(10) PATH 'id',
              display_name VARCHAR(100) PATH 'display_name',
              ort VARCHAR(100) PATH 'ort',
              plz VARCHAR(100) PATH 'plz',
              username VARCHAR(10) PATH 'username') a;
    doch leider wird die DS nicht gefüllt. Wenn ich das ganze debugge ist die DS nach dem aufruf jedenfalls leer. Habe ich etwas nicht beachtet?
    Die DS hat die gleiche Reihenfolge der Felder wie sie beim SQL definiert sind und auch den gleichen Typ und Länge.
    "Mit dem ersten Glied ist die Kette geschmiedet. Wenn die erste Rede zensiert, der erste Gedanke verboten, die erste Freiheit verweigert wird, dann sind wir alle unwiderruflich gefesselt." - Cpt. Jean-Luc Picard

  12. #24
    Registriert seit
    Feb 2001
    Beiträge
    20.329
    a) was sagt der SQLCODE?
    b) gibt es JOBLOG-Einträge?
    c) was steht im Spool als generierter SQL?

    Das Problem des Precompilers ist, dass er beim SELECT * ja eine Namenszuordnung treffen muss.
    Ggf. musst du die Felder statt * explizit benennen, was natürlich aufwändiger ist.
    Des weiteren ist ggf. zu beachten, dass die Funktion XMLTABLE ja eine Tabelle bereitstellt, die auch mal mehr als 1 Zeile haben kann.
    Also ist ggf. der Umweg über Declare Cursor, Open, Fetch, Close erforderlich.

    Vielleicht reicht aber auch ein "fetch first 1 rows only" um einen "Select Into" verwenden zu können.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. Protokoll für Webservice
    By svit in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 02-03-17, 15:13
  2. HTTPS/SSL Webservice bereit stellen
    By Malte in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 12-02-17, 10:07
  3. REST Webservice aus SRVPGM Error 404
    By Malte in forum NEWSboard Programmierung
    Antworten: 18
    Letzter Beitrag: 11-11-16, 13:18
  4. WebService länge der Parameterübergabe
    By svit in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 11-09-14, 13:23
  5. WebService über HTTPS
    By harbir in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 26-03-14, 13:13

Berechtigungen

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