[Résolu][Calc] Appel requête HTTP POST

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur: Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !

[Résolu][Calc] Appel requête HTTP POST

Messagepar Benzouye » 17 Avr 2019 09:48

Bonjour,

Je travaille sur une macro qui devrait interroger un service web SOAP distant.

J'ai vu que les fonctionnalités SOAP avaient vu un embryon apparaître dans OpenOffice, mais qu'elles avaient été abandonnées. Du coup j'ai travaillé à la construction de mon format SOAP (XML) directement dans ma macro.
Mon souci maintenant c'est que pour récupérer la réponse du service web, je dois lui passer une requête HTTP POST ... et je n'ai rien trouvé sur le net allant dans ce sens.
On peut appeler une page web distante pour la récupérer côté OpenOffice, mais je n'ai pas trouvé comment passer des requêtes POST ... c'est peut être un manque de compréhension de ma part sur les requêtes HTTP ...

Du coup je sollicite votre aide pour savoir si il existe un moyen de faire cela en basic, et si oui avez-vous des exemples ou des pistes de solution à me glisser ;)

D'avance merci !
Dernière édition par Benzouye le 19 Avr 2019 13:09, édité 2 fois.
OpenOffice 4.1.0 (obligation de version)
Win7 64 bits
Avatar de l’utilisateur
Benzouye
Membre lOOyal
Membre lOOyal
 
Message(s) : 25
Inscrit le : 28 Fév 2009 11:13

Re: [Calc] Appel requête HTTP POST

Messagepar Hubert Lambert » 17 Avr 2019 11:06

Bonjour,

Avec python, et à condition d'avoir copié la bibliothèque Suds dans le répertoire "pythonpath" d'OpenOffice, cela semble relativement simple à mettre en place :
Code : Tout sélectionner   AgrandirRéduire
from suds.client import Client
def test_suds
(event=None):
    url = "http://webservices.daehosting.com/services/isbnservice.wso?WSDL"
    client = Client(url)
    msgbox(client.service.IsValidISBN13("9789059650886")) 

Un "print" de l'objet client donne :
Code : Tout sélectionner   AgrandirRéduire
Suds ( https://fedorahosted.org/suds/ )  version: 0.6

Service ( ISBNService ) tns="http://webservices.daehosting.com/ISBN"
   Prefixes (0)
   Ports (2):
      (ISBNServiceSoap)
         Methods (2):
            IsValidISBN10(xs:string sISBN)
            IsValidISBN13(xs:string sISBN)
         Types (0):
      (ISBNServiceSoap12)
         Methods (2):
            IsValidISBN10(xs:string sISBN)
            IsValidISBN13(xs:string sISBN)
         Types (0):

Ne connaissant rien à SOAP, je n'ai pas testé plus avant...
Cordialement.
AOOo 4.1.2 sur Win7
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
 
Message(s) : 1061
Inscrit le : 06 Avr 2016 08:26

Re: [Calc] Appel requête HTTP POST

Messagepar Benzouye » 17 Avr 2019 13:08

Merci pour la réponse.

Alors oui, j'avais pensé à Python et même regardé la bibliothèque Zeep, mais j'avais très peur de m'y mettre ...
Niveau SOAP je gère, et cela ne m'inquiète pas, mais je ne connais pas bien Python et pas du tout l'intégration OpenOffice qui va avec, de plus le fichier Calc en question doit être "autonome" et ne pas dépendre de l'installation de OpenOffice du poste sur lequel il est lancé ...

EDIT : Je sors mes nouvelles questions d'ici et crée un nouveau sujet ;)

D'avance merci !

La modération a écrit:Une question par fil SVP règle n° 7
Dernière édition par micmac le 17 Avr 2019 13:23, édité 3 fois.
Raison: lien externe neutralisé
OpenOffice 4.1.0 (obligation de version)
Win7 64 bits
Avatar de l’utilisateur
Benzouye
Membre lOOyal
Membre lOOyal
 
Message(s) : 25
Inscrit le : 28 Fév 2009 11:13

Re: [Calc] Appel requête HTTP POST

Messagepar Dude » 19 Avr 2019 11:05

Fonction pour un WebService en Basic :
Code : Tout sélectionner   AgrandirRéduire
Function fWebService(sURL As String) As String
   Dim oSFA As Object, oTIS As Object
   Dim sXml$, oFlux As Object
   
   oSFA = CreateUnoService("com.sun.star.ucb.SimpleFileAccess")
   oTIS = CreateUnoService("com.sun.star.io.TextInputStream")
   sXml = ""
   On Error GoTo Erreur
   oFlux = oSFA.openFileRead(sURL)
   oTIS.InputStream = oFlux
   Do while not oTIS.isEOF
      sXml = sXml & " " & oTIS.readLine
   Loop
   sFlux.closeInput
   oTIS.closeInput
   Fin:
   fWebService = sXml
   Exit Function
   
   Erreur:
   Resume Fin
End Function

Et son appel :
Code : Tout sélectionner   AgrandirRéduire
Sub Main
   sRet = fWebService("http://webservices.daehosting.com/services/isbnservice.wso?WSDL")
   MsgBox sRet
End Sub
Avatar de l’utilisateur
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 20591
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

Re: [Calc] Appel requête HTTP POST

Messagepar Benzouye » 19 Avr 2019 13:08

Ok pour la récupération du WDSL comme tu la présentes ici, mais ensuite lorsqu'il faut utiliser le service web à proprement parler, il faut lui glisser un fichier XML (format SOAP) dans une requête HTTP POST, et c'était plus ça ma question de départ.

Avec la réponse de Hubert Lambert j'ai réussi à utiliser la classe Python suds qui facilite grandement le dialogue avec le service web.

Je passe donc ce sujet à résolu, et vous invite à venir m'aider sur mon récent sujet :mrgreen:
OpenOffice 4.1.0 (obligation de version)
Win7 64 bits
Avatar de l’utilisateur
Benzouye
Membre lOOyal
Membre lOOyal
 
Message(s) : 25
Inscrit le : 28 Fév 2009 11:13


Retour vers Macros et API

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 2 invité(s)