[AJAX] consommation de web service (xmlhtpprequest)
J'ai ecris un script qui me permet de consommer un service web.
Ce service est installé sur un serveur. Le portail est également installé sur le ce serveur. donc le problème de la consommation du service sur un autre domaine ne se pose pas. Je n'ai donc pas besoin d'un proxy.
sur le portail, l'evenement qui déclenche la conso du service web est le clic sur un bouton.
Quand je teste sur mon poste de dev, tout marche.
par contre, une fois le tout déployé sur le serveur, quand je clique sur le bouton, il me renvoie l'erreur : "permission refusée" et comme textResponse : undefined. et quelques fois, mon readystate = 2.
Le service web marche bien sur le serveur mais l'appel depuis le portail est impossible.
Pourriez-vous m'aider s'il vous plait ? merci.
Voici mon code :
Code:
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
| var xhr;
function MaFonction()
{
document.getElementById('monBouton').disabled = true;
try
{
var code = window.document.getElementsByName("codePDV" )[0].value;
var xmlToSend = "<?xml version='1.0' encoding='utf-8'?>";
xmlToSend += "<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' ";
xmlToSend += "xmlns:xsd='http://www.w3.org/2001/XMLSchema' ";
xmlToSend += "xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>";
xmlToSend += " <soap:Body>";
xmlToSend += " <maFonctionWS xmlns='http://tempuri.org/'>";
xmlToSend += " <codePDV>"+ code +"</codePDV>";
xmlToSend += " <majDonneesClient>true</majDonneesClient>";
xmlToSend += " </maFonctionWS>";
xmlToSend += " </soap:Body>";
xmlToSend += "</soap:Envelope>";
xhr = getXMLHttpRequest();
xhr.onreadystatechange=function()
{
switch(xhr.readyState)
{
case 0:
window.document.getElementById('lblResultWS').innerHTML = " Erreur de connexion au serveur.";
window.document.getElementById('lblResultWS').innerHTML +=" Réponse du serveur : " + xhr.responseText;
document.getElementById('monBouton').disabled = false;
break;
case 1:
window.document.getElementById('lblResultWS').innerHTML = " Ouverture de la communication...";
window.document.getElementById('lblResultWS').innerHTML +=" Réponse du serveur : " + xhr.responseText;
document.getElementById('monBouton').disabled = false;
break;
case 2:
window.document.getElementById('lblResultWS').innerHTML =" Envoi de la requête...";
window.document.getElementById('lblResultWS').innerHTML +=" Réponse du serveur : " + xhr.responseText;
document.getElementById('monBouton').disabled = false;
break;
case 3:
window.document.getElementById('lblResultWS').innerHTML = " Réception des données...";
window.document.getElementById('lblResultWS').innerHTML +=" Réponse du serveur : " + xhr.responseText;
document.getElementById('monBouton').disabled = false;
break;
case 4:
if (xhr.status==200)
{
window.document.getElementById('lblResultWS').innerHTML = "Connexion établie";
window.location.replace("index.php?option=rechargerlapage");
}
else if (xhr.status==404)
{
window.document.getElementById('lblResultWS').innerHTML = "Connexion impossible. hôte introuvable.";
window.location.replace("index.php?option=rechargerlapage");
}
else if(xhr.status == 403)
{
window.document.getElementById('lblResultWS').innerHTML = "Connexion impossible. Permission refusée !";
window.location.replace("index.php?option=rechargerlapage");
}
if(xhr.responseText == "true")
{
window.document.getElementById('lblResultWS').innerHTML = "service effectuée avec succès.";
window.location.replace("index.php?option=rechargerlapage");
}
else if(xhr.responseText == "false")
{
window.document.getElementById('lblResultWS').innerHTML = "Le web service a échoué.";
window.location.replace("index.php?option=rechargerlapage");
}
break;
}
};
if(xhr)
{
var async = true;
xhr.open("POST", "http://127.0.0.1:81/monWebService.asmx", async);
xhr.setRequestHeader("SOAPAction", "http://tempuri.org/maFonctionWS");
xhr.setRequestHeader("Content-type", "text/xml");
xhr.setRequestHeader("Content-Length", xmlToSend.length);
xhr.setRequestHeader("Cache-Control", "no-cache");
xhr.send(xmlToSend);
}
}
catch(err)
{
window.document.getElementById('lblResultWS').innerHTML = "Impossible de se connecter au serveur. Erreur : " + err.message;
document.getElementById('monBouton').disabled = false;
}
}
function getXMLHttpRequest() {
if(window.XMLHttpRequest)
{ // Firefox et autres
xhr = new XMLHttpRequest();
}
else if(window.ActiveXObject)
{ // Internet Explorer
try
{
xhr = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e1)
{
xhr = null;
}
}
}
else
{ // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
}
return xhr;
} |