Bonjour à tous.

Je rencontre depuis quelques jours un souci et j'ai beau faire et refaire ce que je trouve sur le net, je n'avance pas. J'aurais donc besoin de votre aide.

J'aimerais appeler un WebService SOAP depuis du html/javascript. J'utilise pour cela JQuery.

Mon test est simplifié, les paramètre d'appel sont codé en dur. Ce que je veux c'est valider l'appel et le retour.

J'appel un WS qui converti des températures. Rien de bien compliqué. Le wsdl du WS se trouve ici : http://www.webservicex.net/ConvertTemperature.asmx?WSDL

et j'utilise comme end point : http://www.webservicex.net/ConvertTemperature.asmx

J'ai testé le WS avec le Web explorer d'Eclipse. Ce qui me permet de récupéré l'enveloppe soap expédiée au WS et de voir celle de réponse.

A l'envoi, j'ai l'enveloppe suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
<?xml version="1.0" encoding="utf-8"?>
    <soapenv:Envelope              xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:q0="http://www.webserviceX.NET/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <soapenv:Body>
            <q0:ConvertTemp>
                <q0:Temperature>90</q0:Temperature>
                <q0:FromUnit>degreeFahrenheit</q0:FromUnit>
                <q0:ToUnit>degreeCelsius</q0:ToUnit>
            </q0:ConvertTemp>
        </soapenv:Body>
    </soapenv:Envelope>
Mon souci est que le retour est toujours en erreur lorsque je l'appel avec JQuery (en ajax donc).

J'ai une age html (page.html) qui contient le minimum vital ainsi que le template soap. Cette page pointe sur un script JS (main.js) qui contient l'appel ajax dès l'ouverture du document.

Je vous joint les 2 codes:

Page.html:
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
25
26
27
 
<html>
 
<head>
    <script type="text/javascript" src="jquery.js"></script>
    <script type="text/javascript" src="main.js"></script>
</head>
<body>
    <div id="contenu" class="inner">
    </div>
 
    <script id="soap-template-temperature" type="application/soap-template">
    <?xml version="1.0" encoding="utf-8"?>
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:q0="http://www.webserviceX.NET/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <soapenv:Body>
            <q0:ConvertTemp>
                <q0:Temperature>90</q0:Temperature>
                <q0:FromUnit>degreeFahrenheit</q0:FromUnit>
                <q0:ToUnit>degreeCelsius</q0:ToUnit>
            </q0:ConvertTemp>
        </soapenv:Body>
    </soapenv:Envelope>
    </script> 
 
</body>
 
</html>
main.js :
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
25
26
27
28
 
$(document).ready(function() {
    var url2 = "http://www.webservicex.net/ConvertTemperature.asmx";
 
 
    // Get a handle on our SOAP template.
    var soapTemplate2 = $( "#soap-template-temperature" );
    // data from the template
    var soapBody2 = soapTemplate2.html();
    soapBody2 = $.trim( soapBody2 );
 
 
    $.ajax({
        type: "post",
        url: url2,
        contentType: "text/xml",
        data: soapBody2,
        dataType: "xml",
        processData: false,
        timeout: 5000,
        success: function( response ){
            alert("success");
        },
        error: function(XMLHttpRequest,textStatus, errorThrown){
            alert("error : " + textStatus);
        }
    });
});
J'ai vérifié avec des alert(), l'enveloppe soap est bien récupérée coté JS.

Le résultat est toujours l'affichage en erreur:
error : error
.

Qu'est ce que je fait de faux?

Mon environnement :
  • Windows 7 ;
  • jQuery v1.7.1 ;
  • FireFox 10.0.2 ;
  • Wamp server 2.2.


Je suis preneur de toute idées / critiques.


Merci d'avance et bonne journée à vous.