Bonjour,
je me permets de vous solliciter car :
j'ai développé il y a quelques temps déjà un webservice en WinDev 12 (attaqué par une application WinDev qui a été migrée de la version 12 à la 20).
Depuis, le webservice a été migré sur WinDev 19 mais le mode de génération est toujours "ISAPI".
Comme ce mode n'est plus géré dans la nouvelle version de WinDev, je voulais donc migrer ce webservice en mode "serveur d'application webdev 22".
Pas de problème pour générer ce webservice.
Par contre, une fois installé sur mon serveur (sur lequel j'ai donc installé le serveur d'application webdev 22 pour 10 connexions), serveur qui n'était pas nécessaire ne mode "ISAPI", je rencontre un problème pour utiliser ce webservice dans mon application WinDev (qui, elle, est toujours en WinDev 20 ;(
En effet, en mode isapi, l'url du serveur était une url en .soap
http://monserveur/monwebservice/monwebservice.soap
Avec le webservice en mode "serveur d'application webdev", l'url générée est du type :
http://monserveur/monwebservice_WEB/...ebservice.awws
et la description du webservice est :
http://monserveur/monwebservice_WEB/...bservice.awws…
Je n'ai aucun problème pour atteindre la description du webservice depuis mon poste de développement.
Je n'ai aucun problème pour atteindre la page de test : http://monserveur/monwebservice_WEB/awws/index.htm
Je peux tester le webservice comme ceci.
A priori, il fonctionne à ceci prêt :
1) Lorsque je teste une fonction depuis l'index.htm, j'obtient une page blanche :-<
Pourtant, si je fais afficher la source, j'ai bien mes données.
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><FGGetResponse xmlns="urn:dummy" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <FGGetResult xmlns:ns2="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns2:string"> Nb enreg=1 NumFacFG DateArrivage DateFacture DateEcheance DateEnreg FOUNUM FouNom TotalHT MNTTVA MontantTTC
alors que sur le webservice en mode "isapi" j'obtient ceci lisible directement dans le navigateur :
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <?xml version="1.0" encoding="ISO-8859-1"?> -<SOAP-ENV:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> -<SOAP-ENV:Body> -<FGGetResponse SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns="urn:dummy"> <FGGetResult xsi:type="ns2:string" xmlns:ns2="http://schemas.xmlsoap.org/soap/encoding/"> Nb enreg=1 NumFacFG DateArrivage DateFacture DateEcheance DateEnreg FOUNUM FouNom TotalHT [... le reste de mes données...] </FGGetResult </FGGetResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
En outre,
2), lorsque j'essaie d'utiliser le webservice dans mon application,
sans rien changer au code, si ce n'est que tous les paramètres sont maintenant renseignés :
le soapexecute renvoit faux mais sans code erreur :
j'ai essayé avec plusieurs url mais rien n'y fait : je n'obtient pas mon résultat.
http://monserveur/monwebservice_WEB/...ebservice.awws
voici le code qui exécute l'appel au webservice :
le programme passe dans la clause "sinon" mais ErreurInfo(errMessage) ne renvoie rien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SI SOAPExécute(sSOAPUrl,proc,"urn:"+sSOAPUrn) ALORS SResult=SOAPDonneRésultat(SOAPRésultat) SResult=Remplace(SResult,"</"+proc+"Result","") SINON SResult=ErreurInfo(errMessage) FIN RENVOYER SansEspace(SResult)
J'ai modifié le code comme suit :
Et là, j'obtient une erreur de timeout : 22, ERR_TIMEOUT_REQUEST
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SI SOAPExécute(sSOAPUrl,proc,"urn:"+sSOAPUrn) ALORS SResult=SOAPDonneRésultat(SOAPRésultat) SResult=Remplace(SResult,"</"+proc+"Result","") SINON SResult=ErreurInfo(errMessage)+RC+SOAPErreur(SOAPErrMessage) FIN
Alors je n'avance pas beaucoup...
J'ai essayé en important le webservice dans mon projet WinDev. Pas de soucis à ce niveau là, il apparaît bien avec les procédures.
Lorsque j'exécute directement dans le code une fonction du webservice et voici le retour :
<<
Erreur dans le décodage de la réponse du Webservice :
Le document XML n'a pas pu être chargé
Détail de l'erreur système : Ligne 5, Colonne 2 : Input is not proper
UTF-8, indicate encoding !
Bytes: 0xB0 0x20 0x64 0x65
>>
Donc je suppose que s'il y a un problème pour décoder le résultat du webservice c'est que déjà, il y a bien un résultat (que je n'arrive pas à récupérer)
et que probablement, c'est le webservice lui même qui est mal codé, le résultat retourné étant probablement mal "encodé".
Mon pb est de trouver où...
Le code n'a pourtant rien de transcendant :
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 PROCEDURE MaFonction(Mes paramètres.... ) [... Déclaration des variables ...] sSourceXML=RC sSourceXML+="Nb enreg="+nNbEnreg+RC //enregistrement de l'entête sSourceXML+="NumFacFG"+TAB sSourceXML+="DateArrivage"+TAB sSourceXML+="DateFacture"+TAB [...] sSourceXML+=RC [...] sSourceXML=Remplace(sSourceXML,"Nb enreg="+nNbEnreg+RC,"Nb enreg="+nNbEnregFin+RC) sRes=SOAPEncodeRésultat(sSourceXML,SOAPTypeChaîne) RENVOYER sRes
Merci d'avance pour l'aide que vous pourrez m'apporter.
Partager