Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
J'aimerai savoir si quelqu'un a déjà travaillé avec PB sur des webservices REST et de quel manière.
Merci d'avance
PS : pour l'instant j'ai trouver cette méthode expliqué par Bruce Armstrong qui à l'air bien mais fait jongler entre PB.Net et PB.classic dans le cas d'une appli legacy
Dernière modification par Van (25-11-2014 08:53:04)
Hors ligne
Bonjour,
Oui, j'utilise REST pour récupérer des informations sur des campagnes d'e-mailing sur la plateforme web analytics PIWIK http://fr.piwik.org/ :
REST web services are accessed through standard URIs using standard HTTP methods (POST, GET, PUT, DELETE) and return data in Internet standard media types (typically XML or JSON)
J'utilise simplement GetURL avec les arguments adéquats pour récupérer les informations souhaités au format XML que je traite ensuite avec PBDOM pour extraire les informations souhaités.
Hors ligne
Est ce que tu pourrait donner des exemples?
Hors ligne
Bonjour,
J'ai extrait ci dessous les 2 principales méthodes de mon userobject permettant de faire une requête REST :
public function integer uof_getresult (string as_methode, string as_periode, string as_date, string as_format, ref string as_result); // Function : Interrogation du serveur Piwik pour obtenir les résultats d'une campagne // Auteur : PH. BUCAILLE // Date : 04/10/2013 // Lecture des informations de visite sur le serveur PIWIK à l'aide de l'API Piwik // ex: http://www.myserveur.ch/analytics/?module=API&method=Live.getLastVisitsDetails&idSite=1&period=year&date=today&format=xml&token_auth=496a8ec36212afe74e1ef63f35f5b68d&segment=customVariablePageName1==campaign;customVariableValueName1=5 // Arguments : // as_methode : Méthode de l'API PIWIK à utiliser pour interroger le serveur ( ex : Live.getLastVisitsDetails) // as_periode : day, week, month, year, range // as_date : today, yesterday or range (= YYYY-MM-DD,YYYY-MM-DD) // as_format : format de la réponse (xml, json, csv, ....) // as_result : Chaîne contenant le résultat de l'interrogation du serveur Piwik retourné par référence // Valeurs retournées : // 1 : Succés // -1 : Erreur général // -2 : URL Invalide // -4 : Connexion impossible à internet Integer li_ret String ls_request ls_request = is_url + "/?module=API&method=" + as_methode + "&idSite=" + String(il_idsite) + "&period=" + as_periode + "&date=" + as_date + "&format=" + as_format + "&token_auth=" + is_token_auth + "&segment=customVariablePageName1==campaign;customVariablePageValue1==" + is_guid + "&language=en" li_ret = uof_geturl(ls_request, as_result) IF li_ret < 0 THEN RETURN li_ret RETURN 1 end function public function integer uof_geturl (string as_request, ref string as_result); // Function : Retourne la réponse suite à l'interrogation d'une URL // Auteur : PH. BUCAILLE // Date : 05/11/2013 // Arguments : // as_request : URL à interroger // as_xml : Résultat de l'interrogation de l'URL retourné par référence // Valeurs retournées : // 1 : Succés // -1 : Erreur général // -2 : URL Invalide // -4 : Connexion impossible à internet integer li_ret IF GetContextService("Internet", iinet_base) < 0 THEN RETURN -1 // Avec une url invalide, on ne récupére pas une image mais en général la page d'erreur du serveur // => le code retour de la fonction est 1 => Succès li_ret = iinet_base.GetURL(as_request, iuo_internet_result) IF li_ret < 0 THEN RETURN li_ret // 1 Success // -1 General error // -2 Invalid URL // -4 Cannot connect to the Internet IF NOT IsNull(iuo_internet_result.iblb_data) THEN as_result = String(iuo_internet_result.iblb_data, EncodingUTF8!) END IF RETURN 1 end function
Note : iuo_internet_result est une instance d'un userobject personnalisé uo_internet_result qui est un userobject hérité de InternetResult (Cf : la documentation powerbuilder pour son utilisation)
Hors ligne
Bonjour,
J'ai été pas mal occupé par le projet utilisant des WebServices et un autre gros projet mais me voilà pour le retour.
Bon finalement l'utilisation de GetUrl/PostUrl ne convient pas car je dois passer par des url en HTTPS ce que PB ne sait pas gérer.
Je suis alors partis vers MSXML2 en version 6.0 qui avec ServerXMLHTTP me permettait bien des envoi de flux XML mais qui m'a totalement bloqué lors de l'envoi d'un flux text/plain (gzippé ou non).
Après une tentative assez mitigé vers la dll WinINet qui me semblait trop lourde à mettre en place je me suis finalement décidé à écrire une DLL COM en C#.
Tout se passe bien en GET et en POST avec et sans gzip pour les flux text, il me reste a vérifié que l'envoi XML est opérationnel aussi.
Je mettrait le code sur GitHub quand j'aurais le temps si ça peut aider quelqu'un qui aurait les même besoins avec un mini exemple d'implémentation PB.
A suivre.
Dernière modification par Van (06-02-2015 17:06:12)
Hors ligne
Salut, je déterre le truc.
Je serais intéressé par les déclarations de fonctions externe de la WinINet.
Il faut que je dialogue avec un serveur web (celui de LM Studio) pour demander des truc à une ia locale dans une appli PB 9.
Hors ligne