IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AS/400 Discussion :

Web service sur partition IBM i


Sujet :

AS/400

  1. #1
    Candidat au Club
    Homme Profil pro
    Responsable d'exploitation informatique
    Inscrit en
    Octobre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'exploitation informatique
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2018
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Web service sur partition IBM i
    Bonjour,
    Je ne sais pas si je suis au bon endroit pour publier cette demande ...
    Nous avons 2 partition IBM i (V7R2 TR8 SF99720 niveau 18032)
    Installés : 5770SS1 option 39

    Mon soucis :
    J'ai mis en place un web service sur une partition "A" qui me renvoi des caractères accentués.
    La réponse s'affiche correctement quand j'appelle le web service via un navigateur (mozilla,...), mais pas via une émulation 5250 à partir de ma partition B

    PARTITION A (qui héberge le web service) :
    - sysval QCCSID = 297
    - Programme RPGLE
    - renvoi du JSON

    PARTITION B :
    - sysval QCCSID = 65535, mais profil avec ccsid 297
    - Appel du WebService via un SQLRPGLE ou via STRSQL

    SELECT cast(substr(Reponse, 1, 1000) as varchar(1000))
    FROM
    (VALUES(SYSTOOLS.HTTPGETCLOB(
    'http://[MonSysteme]/web/services/MonInfo/123456', ''))) ws(Reponse)

    RENVOI : {"CODERETOUR":"Non Trouvé", ....}
    ====> probleme de conversion de CCSID quelque part, mais ou ?

    idem si je met dans mon header :
    '<header name="Content-Type" value="application/json;charset=UTF_8"/>'

    Je pense qu'il pourrait s'agir de la mise en place du web service et d'une config du serveur APACHE (V2.6) ou du web service
    J'ai essayé à plusieurs endroit de mettre CCSID= UTF8, FR, 297, ... mais rien ne change malgré restart du serveur web.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2006
    Messages
    706
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2006
    Messages : 706
    Points : 1 025
    Points
    1 025
    Par défaut
    Bonjour,

    Cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <header name="Content-Type" value="application/json;charset=UTF_8"/>
    ne convertit rien du tout. Elle indique juste que son contenu est sensé être de l'UTF-8 (et j'espère que tu n'as pas copier-coller, parce que sinon UTF-8 est mal orthographié...).
    Or ta page est générée par un système avec un CCSID en 297.
    Donc soit tu convertis tes données en sortie en UTF-8 directement dans ton RPG, soit tu indiques un code page qui correspond au CCSID 297 (un ISO-8859-1 devrait faire l'affaire).
    Par ailleurs, au cas où tu utilises un fichier "squelette" pour ta page (comme souvent avec l'outil CGIDEV2), fait bien attention au code page du fichier. Il doit correspondre au charset indiqué.

  3. #3
    Candidat au Club
    Homme Profil pro
    Responsable d'exploitation informatique
    Inscrit en
    Octobre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'exploitation informatique
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2018
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Merci m4k-Hurrican mais ...

    Voici mon RPGLE (très light) en tant que Web Service de TEST sur ma partition A
    **free
    Ctl-opt alwnull(*usrctl) pgminfo(*pcml:*module);
    Ctl-opt dftactgrp(*no);
    Dcl-pi *n;
    Reference Char(10); // en entrée
    Code1 Char(10) ccsid(1208); // en sortie
    end-pi;
    Code1 = 'Trouvé';
    *inlr=*on;

    Quand j'appelle via SQL sur partition B :
    SELECT
    cast(substr(Resultat, 1, 10) as varchar(10) ccsid 1208)
    FROM (VALUES(systools.HTTPGETCLOB(
    'http://[PartitionA]:10090/web/services/MonInfo/aaaaaaaa', '')))
    ws(Resultat)

    j'obtiens : {"CODE1":"Trouv�"}
    et si je change 1208 => 297 (dans le RPG source)
    j'obtiens : {"CODE1":"Trouvé"}

    Dans mon RPGLE d'appel (partition B), voici ce que j'ai :
    dcl-s vws1208 SQLTYPE(CLOB:500000) ccsid(1208);
    Exec sql
    SELECT * into :vWs1208 FROM (VALUES(SYSTOOLS.HTTPGETCLOB
    (:URL,:Entete))) WS(reponse);
    dsply ('Rep : ' + %subst(vws1208_data:1:25));
    idem si je crée une variable en ccsid 297

    Ou dois je faire la conversion ? RPG partition A ? partition B ? serveur Apache ?

  4. #4
    Membre éprouvé
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2006
    Messages
    706
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2006
    Messages : 706
    Points : 1 025
    Points
    1 025
    Par défaut
    Bonjour,

    Désolé pour le retard de réponse, j'étais pas mal occupé.
    Le hic quand on travaille comme çà entre programmes et/ou systèmes, c'est que si un des éléments n'utilise pas le même code page, çà coince...
    Si je prends ce que tu as écrit et si je comprend bien :
    - Tu as un programme RPG travaillant en 297 à la base (système).
    - Il renseigne des données que tu encodes en UTF-8 (ccsid 1208).
    - Tu as un web service qui passe par là, et qui récupère les données. Comment es-il codifié lui même ?
    - Ton RPG receveur semble vouloir une donnée en UTF-8 (ccsid 1208)

    Mais ton essai avec SQL avec un ccsid 297, prouve à la sortie (Trouvé), que tu as un encodage en UTF-8 au milieu.
    Je suppose donc que c'est au niveau du web service que çà se passe.
    Le Trouv� semble indiquer lui, que tu as un double encodage en UTF-8 (un par le programme, l'autre par le web service).

    Finalement, le truc je pense, c'est que ton système à l'arrivée est en CCSID 65535.
    Quand tu utilises un service web, çà ne devrait pas. Ce CCSID indique qu'il n'y a pas de conversion, et les données sont donc traitées "telle que".
    Tu devrais le passer en 297, ou mieux en 1147 (avec l'euro...)

  5. #5
    Candidat au Club
    Homme Profil pro
    Responsable d'exploitation informatique
    Inscrit en
    Octobre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'exploitation informatique
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2018
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Bonjour,
    Le QCCSID est à 297 sur les 2 systèmes (serveur et client).
    J'avais déja essayé de mettre toutes les variables en UTF8 dans les RPG, mais j'avais le même probleme.
    On m'a donné pour solution de mettre dans le httpd.conf :
    => Content-type application/json "application/json; charset=utf-8"
    et ça fonctionne : tous les caractères accentués (et autres) sont renvoyés correctement.
    Il semblerait que ce soit un problème sur une directive du serveur Apache.
    Merci à vous (et à C.Masse).
    Je vais clore le sujet.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 05/03/2007, 16h30
  2. Réponses: 1
    Dernier message: 26/02/2007, 10h44
  3. Réponses: 5
    Dernier message: 04/07/2006, 01h11
  4. [Axis]dépoiement web service sur tomcat avec axis
    Par lili2704 dans le forum Tomcat et TomEE
    Réponses: 7
    Dernier message: 02/02/2005, 14h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo