IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Consommation Web service - problème d'authentifcation - Problème avec SOAPAjouteEntête ?


Sujet :

WinDev

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 117
    Points : 90
    Points
    90
    Par défaut Consommation Web service - problème d'authentifcation - Problème avec SOAPAjouteEntête ?
    Bonjour la Communauté.

    Je me tourne vers vous car après de mutliples tentatives, je n'arrive pas à consommer un web service.
    Pour donner le contexte, ce web service permet d'interroger une base de données de l'administration belge. La connexion est sécurisée.

    Il convient de préciser que j'ai testé ce web service via un outil tiers : SoapUI
    Pas de soucis avec cet outil : le retour se fait parfaitement.
    Voir print-screen

    Nom : SoapUI_Print.screen.PNG
Affichages : 450
Taille : 94,7 Ko

    Par ailleurs, je me suis assuré que j'appréhendais correctement la consommation d'un web service dans Windev en utilisant ce web service http://www.dneonline.com/calculator.asmx
    La consommation de ce web service ne pose aucun soucis.

    Voici mon code dans Windev

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    lSPFDemande est un checkEnterpriseNumbers
     
    WITH lSPFDemande
        .contactInformation.identifier.enterpriseNumber="blabla"
        .contactInformation.contactPerson.emailAddress="blabla"
        .contactInformation.contactPerson.firtname="blabla"
        .contactInformation.contactPerson.lastname="blabla"
        .contactInformation.contactPerson.phoneNumber="blabla"
        .contactInformation.mainEmailAddress="blabla"
        .contactInformation.mainPhoneNumber="blabla"
        .enterpriseNumber="blabla"
        .requesterEnterpriseNumber="blabla"
    END
    SOAPAjouteEntête(crassusService,"Username","blabla","http://minfin.fgov.be/dad/services/crassus")
    SOAPAjouteEntête(crassusService,"Password","blabla","http://minfin.fgov.be/dad/services/crassus")
    lbufByBuffer est un Buffer = SOAPPrépare(checkEnterpriseNumbers,lSPFDemande)
    SI PAS SOAPExécuteXML("https://ccff-test1.minfin.be/services/dadCrassusPublic",lbufByBuffer,"") ALORS ErreurInfo(errMessage)
    Trace(SOAPDonneRésultat(SOAPRésultatXML))
    Je mets en pièce jointe le xml du SOAPPrépare et du SOAPDonneRésulat : SoapPrépare.txtSoapRésultat.txt
    La balise <message>User or password invalid</message> ne laisse aucun doute sur le problème...

    Je joints également le wsdl du web service : crassus - WSDL.txt

    J'avoue que je me sens à bout de ressources...

    D'avance merci pour vos précieux retours.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 117
    Points : 90
    Points
    90
    Par défaut Contournement avec les fonctions HTTP
    Je continue d'avancer sur mon problème...

    J'avais l'intuition que Windev ne construisait pas la requête HTTP correctement et n'allait pas placer le "Username" et le "Password" au bon endroit.
    Grâce à WireShark, j'ai analysé la structure envoyée par SoapUI.

    On voit clairement que les Username et Password ne se trouvent pas dans le contenu xml, mais bien plus haut.

    Nom : WireShark.PNG
Affichages : 420
Taille : 16,1 Ko

    En fouillant l'aide de Windev, j'ai trouvé la propriété Entête des variables httpRequête.
    Je me suis dit : soyons fou, et codons tout de bout en bout.
    C'est donc un mix de soap et de http
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    lCrassus_SPF est une httpRequête
    lCrassusResponse est une httpRéponse
    lSPFDemande est un checkEnterpriseNumbers
    AVEC lSPFDemande
        .contactInformation.identifier.enterpriseNumber="blabla"
        .contactInformation.contactPerson.emailAddress="blabla"
        .contactInformation.contactPerson.firtname="Xavier"
        .contactInformation.contactPerson.lastname="NINANE"
        .contactInformation.contactPerson.phoneNumber="blabla"
        .contactInformation.mainEmailAddress="blabla"
        .contactInformation.mainPhoneNumber="blabla"
        .enterpriseNumber="blabla"
        .requesterEnterpriseNumber="blabla"
    FIN
    lbufByBuffer est un Buffer = SOAPPrépare(checkEnterpriseNumbers,lSPFDemande)
    lCrassus_SPF.ContentType=typeMimeTexteXML
    lCrassus_SPF.Entête["SOAPAction"] = ""
    lCrassus_SPF.Entête["Username"] = "MyUsername"
    lCrassus_SPF.Entête["Password"]="MyPassword"
    lCrassus_SPF.Contenu=lbufByBuffer
    lCrassus_SPF.URL="https://ccff-test1.minfin.be/services/dadCrassusPublic"
    lCrassusResponse = HTTPEnvoie(lCrassus_SPF)
    Trace(lCrassusResponse..Contenu)
    Et bingo, ça fonctionne.

    La question subsidiaire que je laisse à une âme charitable de la communauté : est-il possible d'arriver à ce résultat en restant dans les fonctions soap et sans devoir employer ce subterfuge ?

    Bonne fin de WE.

  3. #3
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 343
    Points : 9 482
    Points
    9 482
    Par défaut
    Bonjour,

    Je me rappelle que l'on avait eu des soucis en WD18 parce que les fonctions SOAP n'allaient pas. On était repassés par des fonctions HTTP (et même par une astuce trouvée par un collègue : du VBS en OLE !).

Discussions similaires

  1. [Web Service] Problème avec PHPMailer sur Mutu OVH
    Par boteha dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 02/07/2016, 21h44
  2. [Web Service] Problème de paramétrage avec un webservice PHP
    Par gafish dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 12/11/2012, 14h02
  3. [Web Service] Problème pour consommer un WS en PHP
    Par hycar33 dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 14/09/2011, 10h36
  4. [Web Service] Problème avec service web PHP (SOAP)
    Par daemyn dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 18/05/2010, 20h49
  5. Réponses: 5
    Dernier message: 04/07/2006, 00h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo