Page 1 sur 1
API Java et passage d'un objet en paramètre
Posté : mar. 14 mars 2023, 16:11:50
par Karine
Bonjour à tous,
depuis une APi, je dois passer un objet java en paramètre à un pgm As400. Je ne sais pas trop comment m'y prendre pour le découper? et le convertir
pourriez-vous m'aider ?
merci
Voici l'objet Java:
{
"contact": {
"codeClient": 800105,
"idContactClient": 27,
"nom": "DUPONT ",
"prenom": "FRANCK "
},
"entete": {
"codeVendeur": 11,
"nomFacturation": "JO ",
"rueFacturation": "RUE DE LA PAIX ",
"codePostalFacturation": "75000",
"villeFacturation": "PARIS "
},
"lignes": [
{
"codeArticle": 4031010,
"designationArticle": "ETAGERE 60X240 ",
"quantite": 10,
"prixVente": 81.4,
"montantLigne": 814
},
{
"codeArticle": 9000038,
"designationArticle": "FRAIS DE LIVRAISON ",
"quantite": 1,
"prixVente": 49,
"montantLigne": 49
}
],
"toEmail": true,
"email": "
test@test.fr"
}
Re: API Java et passage d'un objet en paramètre
Posté : jeu. 16 mars 2023, 08:34:28
par SebastienB
Bonjour,
Personnellement, je partirais sur une DS comme celle-là (à adapter):
Code : Tout sélectionner
dcl-ds contactDS qualified template;
codeClient zoned(6) inz(0);
idContactClient zoned(2) inz(0);
nom char(50) inz('');
prenom char(50) inz('');
end-ds;
dcl-ds enteteDS qualified template;
codeVendeur zoned(2) inz(0);
nomFacturation char(50) inz('');
rueFacturation char(50) inz('');
codePostalFacturation char(5) inz('');
villeFacturation char(50) inz('');
end-ds;
dcl-ds ligneDS qualified template;
codeArticle zoned(10) inz(0);
designationArticle char(50) inz(0);
quantite zoned(50) inz(0);
prixVente zoned(9:2) inz(0);
montantLigne zoned(9:2) inz(0);
end-ds;
dcl-ds payloadDS qualified template;
toEmail char(5) inz('');
email char(100) inz('');
dcl-ds data;
contact likeds(contactDS);
entete likeds(enteteDS);
lignes likeds(ligneDS) dim(999);
end-ds;
end-ds;
ensuite je créé une procédure :
dcl-proc receptionPayload export;
dcl-pi receptionPayload;
payload likeds(payloadDS);
httpStatus int(10);
end-pi;
N.B. :
J'ai l'habitude de créer des DS distinctes pour des raisons de ré-utilisabilité dans le programme. Je peux ainsi instancier qu'une partie.
Re: API Java et passage d'un objet en paramètre
Posté : jeu. 16 mars 2023, 14:03:14
par Karine
Bonjour SebastienB,
je vous remercie de votre réponse.
Du Côté de l'api, je recherche comment convertir/passer l'objet en paramètre.
J'ai fait plusieurs essais avec des get notamment mais ne trouve pas la bonne syntaxe .
Le nom de l' objet CommandeClient.
parametersList[1] = new ProgramParameter(nametext1.toBytes(CommandeClient....));
Auriez-vous la bonne syntaxe ?
merci
Re: API Java et passage d'un objet en paramètre
Posté : jeu. 16 mars 2023, 14:28:27
par SebastienB
Comment sont déclarés les paramètres en entrée du programme RPG ?
S'il s'agit d'une DS, côté Java, il est nécessaire de créer un objet reprenant la structure de la DS
Ex. avec la DS contact
Code : Tout sélectionner
// Paramètre de la DS d'entrée
AS400DataType[] dataTypeDsEntree = {
new AS400ZonedDecimal(9, 0), // codeClient
new AS400ZonedDecimal(2, 0), // idContactClient
new AS400Text(50), // nom
new AS400Text(50), // prenom
};
AS400Structure structureDsEntree = new AS400Structure(dataTypeDsEntree);
// Création et affectation des valeurs
Object[] inputDataObjDsEntree = {
BigDecimal.valueOf(codeClient),
BigDecimal.valueOf(idContactClient),
nom,
prenom
};
Puis affecter cet objet aux paramètres avant appel du programme.
Code : Tout sélectionner
listeParametres = new ProgramParameter[1]; // paramètres (1 input)
// Affectation des paramètres
listeParametres[0] = new ProgramParameter(structureDsEntree.toBytes(inputDataObjDsEntree));
Re: API Java et passage d'un objet en paramètre
Posté : jeu. 16 mars 2023, 14:36:56
par Karine
je vais essayer comme cela
merci beaucoup -)