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 !
[Résolu][Calc] Appel requête HTTP POST
Modérateur : Vilains modOOs
Règles du forum
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 !
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 !
-
- Membre lOOyal
- Messages : 29
- Inscription : 28 févr. 2009 10:13
[Résolu][Calc] Appel requête HTTP POST
Dernière modification par Benzouye le 19 avr. 2019 12:09, modifié 2 fois.
OpenOffice 4.1.0 (obligation de version)
Win7 64 bits
Win7 64 bits
-
- SuppOOrter
- Messages : 1214
- Inscription : 06 avr. 2016 07:26
Re: [Calc] Appel requête HTTP POST
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 :
Un "print" de l'objet client donne :
Ne connaissant rien à SOAP, je n'ai pas testé plus avant...
Cordialement.
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"))
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):
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)
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)
-
- Membre lOOyal
- Messages : 29
- Inscription : 28 févr. 2009 10:13
Re: [Calc] Appel requête HTTP POST
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 !
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é
Raison : lien externe neutralisé
OpenOffice 4.1.0 (obligation de version)
Win7 64 bits
Win7 64 bits
-
- IdOOle de la suite
- Messages : 25175
- Inscription : 03 mars 2006 07:45
- Localisation : 127.0.0.1
Re: [Calc] Appel requête HTTP POST
Fonction pour un WebService en Basic :
Et son appel :
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
Code : Tout sélectionner
Sub Main
sRet = fWebService("http://webservices.daehosting.com/services/isbnservice.wso?WSDL")
MsgBox sRet
End Sub
-
- Membre lOOyal
- Messages : 29
- Inscription : 28 févr. 2009 10:13
Re: [Calc] Appel requête HTTP POST
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
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
OpenOffice 4.1.0 (obligation de version)
Win7 64 bits
Win7 64 bits