Pas d'inquiétude, avec PBAdonf, c'est dans la poche ! ^^

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 05-11-2014 17:10:31

Van  
Bienfaiteur du site
Award: bf
Lieu: mouvaux
Date d'inscription: 19-03-2013
Messages: 125
Pépites: 673
Banque: 41

Webservices REST

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)


Tant que ça bouge c'est pas mort, dans le doute frappe encore!
Ni dieu ni maître, sauf maître Kanter!

Hors ligne

 

#2 06-11-2014 13:31:18

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 747
Pépites: 1,028,843
Banque: 171,170,849,654

Re: Webservices REST

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

 

#3 06-11-2014 15:24:38

Van  
Bienfaiteur du site
Award: bf
Lieu: mouvaux
Date d'inscription: 19-03-2013
Messages: 125
Pépites: 673
Banque: 41

Re: Webservices REST

Est ce que tu pourrait donner des exemples?


Tant que ça bouge c'est pas mort, dans le doute frappe encore!
Ni dieu ni maître, sauf maître Kanter!

Hors ligne

 

#4 06-11-2014 16:02:40

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 747
Pépites: 1,028,843
Banque: 171,170,849,654

Re: Webservices REST

Bonjour,

J'ai extrait ci dessous les 2 principales méthodes de mon userobject permettant de faire une requête REST :

Code: pb

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

 

#5 06-02-2015 17:05:52

Van  
Bienfaiteur du site
Award: bf
Lieu: mouvaux
Date d'inscription: 19-03-2013
Messages: 125
Pépites: 673
Banque: 41

Re: Webservices REST

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)


Tant que ça bouge c'est pas mort, dans le doute frappe encore!
Ni dieu ni maître, sauf maître Kanter!

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22