PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 23 → Au secours WebService
Au secours WebService
Débuté par meumeu321, 11 juin 2018 17:19 - 4 réponses
Membre enregistré
25 messages
Posté le 11 juin 2018 - 17:19
Bonjour,

je galère avec un webservice depuis un moment.
Voici le wsdl : http://testreswel2.arsoe-soual.com/v1100/wsMdC/wsMdcEdel.wsdl

Voici mon code :
varEnvoi est wsMdCPort.MdCGetDonneesCaprinRequest
varRetour est wsMdCPort.MdCGetDonneesCaprinResponse

varEnvoi.JetonAuthentification = SAI_Jeton
varEnvoi.Exploitation.NumeroExploitation = gsINSEE
varEnvoi.Exploitation.CodePaysExploitation = "FR"
varEnvoi.DateDebutDemande = "20170914"
varEnvoi.DateFinDemande = "20170914"
varEnvoi.DateFinDemandeRenseignee = False
varEnvoi.IndicateurDemandeGenealogie = False
varEnvoi.IndicateurDemandeGenetique = True

varRetour = wsMdCPort.MdCGetDonneesCaprin(varEnvoi)


Le service a renvoyé l'erreur suivante :
Code : 'ActionNotSupported'
Message : Impossible de traiter le message contenant Action 'MdC:mdCGetDonneesCaprinIn' au récepteur en raison d'une non-correspondance de ContractFilter au EndpointDispatcher. Ceci peut être dû à une non-correspondance de contrat (Actions différentes entre expéditeur et récepteur) ou à une différence de liaison/sécurité entre expéditeur et récepteur. Vérifiez que l'expéditeur et le récepteur ont le même contrat et la même liaison (notamment conditions de sécurité, par exemple Message, Transport, None).


Quelqu'un peut me renseigner sur cette erreur ?

Merci d'avance,
Membre enregistré
835 messages
Popularité : +11 (11 votes)
Posté le 11 juin 2018 - 17:29
Utiliser SoapUi pour faire vos test ensuite developper avec Windev

--
Bertin CARRIERE - SPRL RGPD.Zen-Project.be
bertin.carriere@gmail.com
http://www.zen-project.be http://www.linkedin.com/in/bertincarriere

Belgique +32(0)2/318.02.67
France +33(0)3/66.722.542
Espagne +34.5/12.702.266

http://www.be-dev.be
Membre enregistré
25 messages
Posté le 11 juin 2018 - 17:36
J'y arrive dans SoapUi mais j'utilise le .svc



Posté le 12 juin 2018 - 17:54
Le 11/06/2018 à 15:19, meumeu321 a écrit :
Bonjour,

je galère avec un webservice depuis un moment. Voici le wsdl :
http://testreswel2.arsoe-soual.com/v1100/wsMdC/wsMdcEdel.wsdl

Voici mon code :
varEnvoi est wsMdCPort.MdCGetDonneesCaprinRequest
varRetour est wsMdCPort.MdCGetDonneesCaprinResponse

varEnvoi.JetonAuthentification = SAI_Jeton
varEnvoi.Exploitation.NumeroExploitation = gsINSEE
varEnvoi.Exploitation.CodePaysExploitation = "FR"
varEnvoi.DateDebutDemande = "20170914"
varEnvoi.DateFinDemande = "20170914"
varEnvoi.DateFinDemandeRenseignee = False
varEnvoi.IndicateurDemandeGenealogie = False
varEnvoi.IndicateurDemandeGenetique = True

varRetour = wsMdCPort.MdCGetDonneesCaprin(varEnvoi)


Le service a renvoyé l'erreur suivante :
Code : 'ActionNotSupported'
Message : Impossible de traiter le message contenant Action
'MdC:mdCGetDonneesCaprinIn' au récepteur en raison d'une
non-correspondance de ContractFilter au EndpointDispatcher. Ceci peut
être à une non-correspondance de contrat (Actions différentes entre
expéditeur et récepteur) ou à une différence de liaison/sécurité entre
expéditeur et récepteur. Vérifiez que l'expéditeur et le récepteur ont
le même contrat et la même liaison (notamment conditions de sécurité,
par exemple Message, Transport, None).


Quelqu'un peut me renseigner sur cette erreur ?

Merci d'avance,


tu es sur du format date que tu passe à ton webservice ?
pour tester, tu genere ton xml avec windev, puis tu le copie/colle dans
soapui pour voir si il est correct...
Membre enregistré
135 messages
Popularité : +1 (1 vote)
Posté le 13 juin 2018 - 11:42
Bonjour meumeu321,

Comme l'a mentionné philippe gracia je pense aussi que le format de date n'est pas le bon.

J'avais fait une procédure pour convertir ma date WLangage en date webservice, la voici (pas sûr que ça fonctionne dans votre cas, il faut analyser ce qui fonctionne avec SoapUI) :
Procedure donneDateTime_pour_webservice(LOCAL dhLocal est une DateHeure = DateHeureSys())

dhTestLocal est une DateHeure= DateHeureSys()
dhTestUTC est une DateHeure = DateHeureLocaleVersUTC(dhTestLocal)
duDecalageUTC est une Durée = dhTestLocal - dhTestUTC //décalage réel avec UTC
sDecalage est une chaîne = WL.DuréeVersChaîne(duDecalageUTC,"+HH:MM")
SI PAS Contient(sDecalage,"-") ALORS
sDecalage = "+"+sDecalage
FIN
dhMaintenantUTC est une DateHeure = DateHeureLocaleVersUTC(dhLocal)
sResultat est une chaîne = DateVersChaîne(dhLocal..PartieDate,"AAAA-MM-JJ")+"T"+HeureVersChaîne(dhLocal..PartieHeure,"HH:MM:SS.CCCCCC")+sDecalage
RENVOYER sResultat


Ensuite pour avoir plus de maitrise sur ce qui est envoyé et ce que l'on reçoit il faut utiliser les types wsRequête (https://doc.pcsoft.fr/fr-FR/?1000020577) et wsRéponse (https://doc.pcsoft.fr/fr-FR/?1000020568).

Je corrigerai donc le code initial comme ceci :

wsReq est un wsRequête
wsRep est un wsRéponse

varEnvoi est wsMdCPort.MdCGetDonneesCaprinRequest
varRetour est wsMdCPort.MdCGetDonneesCaprinResponse

varEnvoi.JetonAuthentification = SAI_Jeton
varEnvoi.Exploitation.NumeroExploitation = gsINSEE
varEnvoi.Exploitation.CodePaysExploitation = "FR"
varEnvoi.DateDebutDemande = donneDateTime_pour_webservice("20170914000000000")
varEnvoi.DateFinDemande = donneDateTime_pour_webservice("20170914000000000")
varEnvoi.DateFinDemandeRenseignee = False
varEnvoi.IndicateurDemandeGenealogie = False
varEnvoi.IndicateurDemandeGenetique = True



wsRep = wsMdCPort.MdCGetDonneesCaprin(wsReq,varEnvoi)

Trace("requête envoyée : "+wsReq..SourceXML)
Trace("réponse reçue : "+wsRep..SourceXML)

varRetour = wsRep


Après je corrigerai en fonction de l'analyse entre les résultats de SoapUI et de la variable wsReq..SourceXML.