如何使用JQuery AJAX查看我发送的SOAP请求数据

时间:2012-07-19 09:36:12

标签: jquery soap

我正在使用Jquery来创建soap请求。以下是肥皂要求的信封。

POST /netforumaiatest2/xweb/secure/netforumxml.asmx HTTP/1.1
Host: amstest.aia.org
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://www.avectra.com/2005/Authenticate"

<?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>
    <Authenticate xmlns="http://www.avectra.com/2005/">
      <userName>string</userName>
      <password>string</password>
    </Authenticate>
  </soap:Body>
</soap:Envelope>

我在jquery中编写了代码

var soapMessage='<?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><Authenticate xmlns="http://www.avectra.com/2005/"><userName>user</userName><password>pass</password></Authenticate></soap:Body></soap:Envelope>';

    $.ajax({
    url: productServiceUrl,
    type: "POST",
    dataType: "xml",
    data: soapMessage,
    complete: endSaveProduct,
    contentType: "text/xml; charset=\"utf-8\""
           });

但是在endSaveProduct中,我得到了status = error。如何通过$.ajax call查看我发送的数据。请帮帮我。

4 个答案:

答案 0 :(得分:1)

您可以使用beforeSend选项和控制台记录数据: beforeSend: function(data) {console.log(data);}

答案 1 :(得分:1)

我建议你用另一种方式做这件事。对PHP文件(或aspx)进行ajax调用,然后在那里进行SOAP调用。与javascript相比,你可以用这些语言中的soap做更多的事情。

如果您决定使用PHP,我会在一段时间后发现这个可爱的类重写:

class SoapClientDebug extends SoapClient {
    public function __doRequest($request, $location, $action, $version) {
        print_r($request);
        return parent::__doRequest($request, $location, $action, $version);
    }
}

简单地改变:

$client = new SoapClient('foo.wsdl');

使用

$client = new SoapClientDebug('foo.wsdl');

答案 2 :(得分:0)

使用Fiddler检查您的请求和回复。

答案 3 :(得分:0)

在这里,我需要什么。我想在这里打印HTTPRequest的响应。

function endSaveProduct(xmlHttpRequest, status)
            {
              $(xmlHttpRequest.responseXML)
                {
                    alert(xmlHttpRequest.responseText);
通过在soap请求标头中添加操作来解决

错误

$.ajax({
                       url: productServiceUrl,
                       type: "POST",
                       beforeSend: function (xhr){
                       xhr.setRequestHeader("SOAPAction", "URL/Authenticate");
                       //alert("in before send");
                       },
                       dataType: "xml",
                       data: soapMessage,
                       complete: endSaveProduct,
                       contentType: "text/xml; charset=\"utf-8\""
                       }).done(function () {alert("calling Authenticate");})
                .fail( function() {alert("fail");});