[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 !
Avatar de l’utilisateur
Benzouye
Membre lOOyal
Membre lOOyal
Messages : 29
Inscription : 28 févr. 2009 10:13

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

Message par Benzouye »

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 modification par Benzouye le 19 avr. 2019 12:09, modifié 2 fois.
OpenOffice 4.1.0 (obligation de version)
Win7 64 bits
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 07:26

Re: [Calc] Appel requête HTTP POST

Message par Hubert Lambert »

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

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

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.7 sur Win10
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
Benzouye
Membre lOOyal
Membre lOOyal
Messages : 29
Inscription : 28 févr. 2009 10:13

Re: [Calc] Appel requête HTTP POST

Message par Benzouye »

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 vous a écrit: Une question par fil SVP règle n° 7

Dernière modification par micmac le 17 avr. 2019 12:23, modifié 3 fois.
Raison : lien externe neutralisé
OpenOffice 4.1.0 (obligation de version)
Win7 64 bits
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25175
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Appel requête HTTP POST

Message par Dude »

Fonction pour un WebService en Basic :

Code : Tout sélectionner

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

Sub Main
	sRet = fWebService("http://webservices.daehosting.com/services/isbnservice.wso?WSDL")
	MsgBox sRet
End Sub
Avatar de l’utilisateur
Benzouye
Membre lOOyal
Membre lOOyal
Messages : 29
Inscription : 28 févr. 2009 10:13

Re: [Calc] Appel requête HTTP POST

Message par Benzouye »

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