2012-03-03 3 views
1

J'ai essayé de faire l'appel SOAP selon la Simplest SOAP exampleObtenez la réponse SOAP du serveur

Je suis en mesure d'envoyer la demande à travers ce code, mais il n'y a pas de réponse en provenance du serveur. L'exemple de code i donné ci-dessous:

Entrez le code ici

<html> 



    <head> 
    <title>SOAP call sample</title> 
    <script language="Javascript"> 
    <!--  

    function xmlhttpPost() { 
     var symbol = "MSFT"; 
var xmlhttp = new XMLHttpRequest(); 

xmlhttp.open("POST", "http://www.webservicex.net/stockquote.asmx?op=GetQuote",true); 

xmlhttp.onreadystatechange=function() { 

if (xmlhttp.readyState == 4) { 

    alert("ready state callback:"+xmlhttp.readyState); 

    alert("response text or XML"xmlhttp.responseText); 

    var json = XMLObjectifier.xmlToJSON(xmlhttp.responseXML); 

    var result = json.Body[0].GetQuoteResponse[0].GetQuoteResult[0].Text; 

    json = XMLObjectifier.xmlToJSON(XMLObjectifier.textToXML(result)); 

    alert(symbol + ' Stock Quote: $' + json.Stock[0].Last[0].Text); 

} 

} 


xmlhttp.setRequestHeader("SOAPAction", "http://www.webserviceX.NET/GetQuote"); 

xmlhttp.setRequestHeader("Content-Type", "text/xml"); 

xmlhttp.setRequestHeader("POST","/stockquote.asmx HTTP/1.1"); 

xmlhttp.setRequestHeader("Host","www.webservicex.net"); 

xmlhttp.setRequestHeader("Content-Length",1000); 

alert("setrequest header completed"); 

var xml = '<?xml version="1.0" encoding="utf-8"?>' + 
'<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ' + 
       'xmlns:xsd="http://www.w3.org/2001/XMLSchema" ' + 
       'xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">' + 
    '<soap:Body> ' + 
    '<GetQuote xmlns="http://www.webserviceX.NET/"> ' + 
     '<symbol>' + symbol + '</symbol> ' + 
    '</GetQuote> ' + 
    '</soap:Body> ' + 
'</soap:Envelope>'; 

xmlhttp.send(xml); 

alert("request sent"+xmlhttp); 

    } 
//--> 
    </script> 

</head> 

<form name="main"> 

    <table> 

    <tr> 

     <td> <input value="Submit to eBay => " type="button" 
onclick='JavaScript:xmlhttpPost()'></td> 
     <td><textarea name="eBayXMLResponse" wrap="soft" rows="40" cols="50" style="overflow:scroll" ID="Textarea1"></textarea></td> 
    </tr> 
    </table> 
</form> 

</html> 

J'ai essayé cet exemple avec le projet web dynamique grâce à Eclipse et qui traverse app apache-tomcat-7.0.25 server.Is ce suffisant pour exécuter ce échantillon? S'il vous plaît aidez-moi à afficher la réponse dans la console du navigateur. Je me bats depuis une semaine dans ce numéro ... s'il vous plaît laissez-moi savoir si quelqu'un a une idée à ce sujet.

+0

Peut-être que vous avez besoin d'une capture de paquet entre le client et le serveur, pour voir ce qui s'est passé. – ciphor

+0

salut ciphor, s'il vous plaît dites-moi clairement ce qui est nécessaire pour obtenir une réponse SOAP? – Mahes

+0

Il existe plusieurs raisons possibles, 1. la demande n'est pas envoyée; 2. le serveur ne fonctionne pas; 3. la réponse n'est pas envoyée; la capture de paquets vous aidera à clarifier la situation que vous avez rencontrée. – ciphor

Répondre

0

Essayez de faire la demande de savon en utilisant jquery. Cela fonctionne pour moi:

var soapAction = this.Namespace + this.Contract + '/' + pMethod; 
var soapResponse = pMethod + 'Response', soapResult = pMethod + 'Result'; 
$.ajax({ 
    type: "POST", 
    url: this.URI, 
    data: envelope, 
    contentType: "text/xml", 
    dataType: "xml", 
    beforeSend: function (xhr) { 
     xhr.setRequestHeader("SOAPAction", soapAction); 
    }, 
    success: function (pData) { 
     var answer; 
     $(pData).find(soapResponse).each(function() { 
      answers=this.parseResult(($(this).find(soapResult))[0]); 
     }); 
     onSuccess(answers); 
    }, 
    error: onError 
});