[NEWSboard IBMi Forum]
Seite 3 von 4 Erste ... 2 3 4 Letzte
  1. #25
    Registriert seit
    Oct 2016
    Beiträge
    24
    Hat sich bereits erledigt....habe übersehen das ich httpgetclob nicht qualifiert angegeben habe.
    Nun passt alles und die DS wird richtig gefüllt! Nun teste ich das ganze mal mit einem User der Umalute enthält.
    "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

  2. #26
    Registriert seit
    Oct 2016
    Beiträge
    24
    Also ich habe nach wie vor das Problem mit den Umlauten. Eben wieder auf den ursprünglichen 'testüser' geändert und wieder steht in der DS folgendes drin.
    Code:
    WEBSERVICEREQUEST.USERNAME = 'testüser '
    EDIT: Wenn ich das ganze interaktiv mache ist das auch so. Umlaute werden nicht korrekt angezeigt.
    "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. #27
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Die Frage ist halt wieder, welche CCSID hat der CLOB, der vom httpgetclob zurückgeliefert wird.
    Ich nehme mal schwer an, dass hier ggf. die JOB-CCSID genommen wird.
    Somit sind die Daten nicht als UTF-8 erkennbar, denn offensichtlich interessiert sich der XMLTABLE nicht für die Encoding-Angabe des XML's.
    Und somit sind wir wieder beim 3-Fach-Cast des Ergebnisses von httpgetclob.

    Allerdings kann das auch wiederum an der Spaltendefinition liegen.
    Siehe hier am Beispiel:
    https://www.ibm.com/developerworks/c...0to%20SYSTOOLS

    definiere in den Columns hinter varchar(nn) zusätzlich CCSID 1208.
    Denn wie es aussieht macht der XMLTABLE keine Codewandlung sondern erst die SQL-Runtime bei der Fetch-Übergabe.
    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. #28
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Nachtrag auch hier:
    https://www.ibm.com/support/knowledg...zajpxmlvar.htm

    Wenn du mit SQL XML umgehst müssen die Variablen mit CCSID 1208 definiert werden.
    Ggf. wird dann mittels %CHAR in die SBCS bzw. mit %UCS2 in Unicode umgewandelt.
    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

  5. #29
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Wie sieht das Ergebnis aus, wenn Du das SQL-Statement direkt (nicht innerhalb eines Programms) absetzt?
    Falsche oder richtige Werte?

    ggf. musst Du noch das Ergebnis noch decoden mit URLDECODE.

    Wenn auch bei einer direkten Abfrage falsche Werte kommen, dann ist das ursprüngliche XML verwutzt.
    SQL geht per Default von UTF-8 aus, kann aber auch andere CCSIDs verarbeiten. Das hängt jedoch von der QAQQINI bzw. dem Eintrag in Option SQL_XML_DATA_CCSID ab.

    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

  6. #30
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Das ursprüngliche XML, siehe den bereitgestellten Link, sieht OK aus.
    Es muss also mit dem Return-Typ der HTTP-Funktion zusammenhängen.
    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

  7. #31
    Registriert seit
    Oct 2016
    Beiträge
    24
    Zitat Zitat von B.Hauser Beitrag anzeigen
    Wie sieht das Ergebnis aus, wenn Du das SQL-Statement direkt (nicht innerhalb eines Programms) absetzt?
    Falsche oder richtige Werte?

    ggf. musst Du noch das Ergebnis noch decoden mit URLDECODE.

    Wenn auch bei einer direkten Abfrage falsche Werte kommen, dann ist das ursprüngliche XML verwutzt.
    SQL geht per Default von UTF-8 aus, kann aber auch andere CCSIDs verarbeiten. Das hängt jedoch von der QAQQINI bzw. dem Eintrag in Option SQL_XML_DATA_CCSID ab.

    Birgitta
    Guten Morgen,

    wenn ich das ganze über strsql oder dbeaver laufen lassen ändert sich nichts am Ergebnis, der username wird genauso angezeigt wie im RPG Programm mit embedded SQL. Die QAQQINI hat folgenden Inhalt:
    Code:
    APPLY_REMOTE                 
    PARALLEL_DEGREE              
    ASYNC_JOB_USAGE              
    QUERY_TIME_LIMIT             
    UDF_TIME_OUT                 
    MESSAGES_DEBUG               
    PARAMETER_MARKER_CONVERSION  
    OPEN_CURSOR_THRESHOLD        
    OPEN_CURSOR_CLOSE_COUNT      
    OPTIMIZE_STATISTIC_LIMITATION
    OPTIMIZATION_GOAL            
    FORCE_JOIN_ORDER             
    COMMITMENT_CONTROL_LOCK_LIMIT
    REOPTIMIZE_ACCESS_PLAN       
    SQLSTANDARDS_MIXED_CONSTANT  
    SYSTEM_SQL_STATEMENT_CACHE   
    VISUAL_EXPLAIN_DIAGRAM       
    IGNORE_LIKE_REDUNDANT_SHIFTS 
    STAR_JOIN                 
    SQL_SUPPRESS_WARNINGS     
    SQL_TRANSLATE_ASCII_TO_JOB
    NORMALIZE_DATA            
    LOB_LOCATOR_THRESHOLD
    "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

  8. #32
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Dann definiere die Hostvariablen und/oder die Column-Variablen doch mal mit CCSID 1208!!!
    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

  9. #33
    Registriert seit
    Oct 2016
    Beiträge
    24
    Habe ich beides schon versucht, hatte nur noch keine Zeit das zu schreiben. Wenn ich nur die DS Felder mit CCSID 1208 definiere passiert nichts, wenn ich nur die DB Felder mit CCSID 1208 definiere passiert nichts, mache ich es bei beiden passiert auch nichts.

    Auch die DS Felder statt 1208 mit *UTF8 zu definieren brachte keine Lösung.
    "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

  10. #34
    Registriert seit
    Oct 2016
    Beiträge
    24
    Ich habe jetzt einfach mal interaktiv das SQL ausgeführt und bei jedem Aufruf die CCSID geändert, ich habe jetzt alle CCSIDs durch die mir mit F4 bei CHGJOB beim Feld CCSID angezeigt werden. Keine CCSID führte zum Erfolg.
    "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. #35
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Wenn du Programmvariablen mit 1208/*UTF8 definierst, enthalten sie natürlich den 1208-Code.
    Erst bei einer Übertragung in eine UCS2/SBCS-Variable wird dann implizit eine Codewandlung durchgeführt.
    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

  12. #36
    Registriert seit
    Oct 2016
    Beiträge
    24
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Wenn du Programmvariablen mit 1208/*UTF8 definierst, enthalten sie natürlich den 1208-Code.
    Erst bei einer Übertragung in eine UCS2/SBCS-Variable wird dann implizit eine Codewandlung durchgeführt.
    Das hat bei mir auch nicht geholfen. Die Umalute sind weiterhin nicht korrekt.
    Ich habe jetzt eine Lösung gefunden, die gefällt mir zwar nicht sehr ist aber ersteinmal eine (Zwischen)Lösung:
    Code:
    //Berechtigung - API/Secret Key
    http_xproc(HTTP_POINT_ADDL_HEADER:%paddr(AddHeaderData));
    
    //Im ersten Aufruf müssen wir anhand des Usernamens die ID bekommen
    myurl = 'http://prodportal01/Portal/api/v2/users?filter=';
    query = 'username:' + %trim(username);
    
    EXEC SQL SET :query = systools.urlencode(:query,'UTF-8');
     myurl += query;
    
     xmlPath = '/WebServices/GetUserData/' + %char(%timestamp())
      + '-' + %trim(username) + '_ID' + '.xml';
    
    //Die Streamfile(XML) muss vorher erstellt werden, ansonsten gibt
    //es Probleme mit der CCSID die wohl nicht richtig erkannt wird, dadurch
    //werden auch keine Umlaute angezeigt
    returnCode = open_(%trim(XmlPath) : O_CREAT + O_RDWR + O_CODEPAGE
     + O_TEXTDATA:S_IRWXU + S_IRWXG + S_IRWXO:1208);
    
     returnCode = http_url_get(myurl:xmlPath);
     if (returnCode <> 1);
       return *off;
     endif;
    
     xml-into(e) WebserviceRequest %xml(xmlPath:'path=PagedListView'
      + 'ModelOfuserNcCATIYq/items/user' + ' ' + XMLOPTIONS);
    Es scheint so zu sein das die XML Datei nicht mit der richtigen CCSID angelegt wird, obwohl unter Attribute die richtige steht. Sobald ich nämlich mittels IFS API vorher eine leere Datei in 1208 anlege oder eine Datei als Ziel für den Response angebe wo bereits Umlaute richtig angezeigt werden, gibt es keine Fehldarstellungen der Umlaute und alles ist so wie es sein sollte.

    Warum dies so ist weiß ich nicht, aber momentan habe ich keine Zeit mehr mich mit der Fehlersuche zu beschäftigen. Es ist zwar unschön aber das Leben ist kein Ponyhof....

    Nochmals danke für die Unterstützung und die Hilfe. Ich denke ich konnte eine Menge hieraus für die Zukunft mitnehmen.
    "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

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
  •