Bonjour,
Je cherche à interfacer Delphi avec l’API de joomla, je n’ai trouvé que peux d’infos sur le développement entre les deux, auriez-vous des liens utiles qui me ferait gagner du temps sur ce sujet ?
Je vous remercie par avance.
Bonjour,
Je cherche à interfacer Delphi avec l’API de joomla, je n’ai trouvé que peux d’infos sur le développement entre les deux, auriez-vous des liens utiles qui me ferait gagner du temps sur ce sujet ?
Je vous remercie par avance.
Salut
joomla n'est rien d'autre qu'un cms en php
donc c'est les technos web (Rest, RESTful,...) qui peuvent s'appliquer
Clairement, c'est côté Joomla que cela semble peu natif avec la nécessité d'installer des plugins pour gérer les API REST, une fois que tu auras via PostMan un jeu de test fonctionnel avec les API désiré, il faudra convertir cela en Delphi, et c'est assez trivial avec un TIdHTTP ou un TRESTClient
Donc
1- Installer les Plugins Joomla
2- Etudier la gestion du Bearer Auth de Joomla
3- Se créer un jeu de test sous PostMan (Ce qui semble particulièrement mal documenté)
4- Se créer des classes en Delphi pour manipuler la REST API comme des Objets
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !![]()
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !
L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs
Je gère plusieurs site sous joomla qui sont interfacés avec des applications delphi. Ce qu'il faut savoir c'est que tout le site est contenu dans la base de donnée. Donc pour récupérer et/ou envoyer des données il faut accéder à la base de données.
La solution que j'ai adoptée (qui n'est peut être pas la meilleure) est d'utiliser des scripts php que je viens interroger avec le composant du TNetHTTPRequest
Exemple:
Le script php
Pour me faciliter la vie je fait en sorte que le retour du code PHP soit au format json.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 <?php $mysqli = new mysqli("host", "identifiant", "motdepasse", "base de données"); if ($mysqli->connect_errno) { $echo = "ERREUR=PAS DE CONNEXION BDD!ERREUR"; } else { $req = "SELECT ref,nom FROM `t_pays`"; if ($_POST['param1']>0) $req.=" WHERE continent=".$_POST['param1']; $req.=" ORDER BY nom"; $resultat = $mysqli->query($req); if (! $resultat) { $reponse[]= array("REQ"=>"ECHECSQL","REQUETE"=>$req,"NUMERRSQL"=>$mysqli->errno,"ERRSQL"=>$mysqli->error); } else { $resultat->data_seek(0); $reponse[]= array("REQ"=>"LISTEPAYS"); while ($repbdd = $resultat->fetch_assoc()) { $reponse[]=$repbdd; } } echo json_encode($reponse); } ?>
Pour interroger le script voici ce que je fais.
J'utilise ensuite la fonction OnRequestCompleted pour récupéré le résultat sous la forme d'une liste d'objet json qui seront ensuite décodé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 params := TStringList.Create; params.Add(Format('param1=%d', [Reference])); ReqHTTP.Post(urlreq, params); params.Free;
Et ça fonctionne très bien sous Windows, Android et Mac
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 procedure TdmPDB.retourSite(const Sender: TObject; const AResponse: IHTTPResponse); var ret: string; jsonval: TJsonValue; lstelem: TJSONArray; begin try ret := AResponse.ContentAsString(TEncoding.UTF8); except on E: Exception do ret := ''; end; if pos('[{', ret) = 1 then begin jsonval := TJsonObject.ParseJSONValue(ret); lstelem := jsonval.GetValue<TJSONArray>(); //decodage du json end; end;
Merci Gouyon pour cette excellente piste de réflexion…
![]()
Partager