Получить SOAP-ответ от сервера - PullRequest
1 голос
/ 03 марта 2012

Я пытался сделать SOAP-вызов в соответствии с Простейший пример SOAP

Я могу отправить запрос через этот код, но с сервера не поступает ответ. Пример кода, который я дал ниже:

введите код здесь

<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>

Я попробовал этот пример с динамическим веб-проектом через eclipse и через сервер приложений apache-tomcat-7.0.25. Этого достаточно для запуска этого примера? Пожалуйста, помогите мне отобразить ответ в консоли браузера. я борюсь за неделю в этом вопросе ..... пожалуйста, дайте мне знать, если у кого-нибудь есть идеи по этому поводу.

1 Ответ

0 голосов
/ 04 апреля 2012

попробуйте сделать запрос на мыло, используя jquery.Это работает для меня:

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
});
...