繁体   English   中英

jQuery Ajax SOAP没有响应

[英]Jquery ajax SOAP no response

我不知道我到底发生了什么。 我正尝试致电肥皂服务,但即时通讯没有任何反应。

function soap_call(){     
    var wsUrl = "https://ws.cert.transactionexpress.com/portal/merchantframework/MerchantWebServices-v1?wsdl";
    var soapRequest = 
        '<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="http://postilion/realtime/merchantframework/xsd/v1/"> \
          <SOAP-ENV:Body> \
            <v1:UpdtRecurrProfRequest> \
                 <v1:merc> \
                    <v1:id>7777778598</v1:id> \
                    <v1:regKey>BLHP7DK5W385J6WZ</v1:regKey> \
                    <v1:inType>1</v1:inType> \
                    <v1:prodType>5</v1:prodType> \
                 </v1:merc> \
                 <v1:cust> \
                    <v1:type>0</v1:type> \
                    <v1:contact> \
                       <v1:fullName>Test Person</v1:fullName> \
                       <v1:addrLn1>123 Main</v1:addrLn1> \
                       <v1:addrLn2>Second Floor</v1:addrLn2> \
                       <v1:city>Gilbert</v1:city> \
                       <v1:state>AZ</v1:state> \
                       <v1:zipCode>85296</v1:zipCode> \
                       <v1:type>1</v1:type> \
                       <v1:stat>1</v1:stat> \
                    </v1:contact> \
                    <v1:pmt> \
                       <v1:type>0</v1:type> \
                       <v1:card> \
                          <v1:pan>4485896261017708</v1:pan> \
                          <v1:sec>999</v1:sec> \
                          <v1:xprDt>1602</v1:xprDt> \
                       </v1:card> \
                       <v1:ordNr>Cust Ref ID  Can be used for extra info</v1:ordNr> \
                       <v1:desc>Can be used to name wallet again</v1:desc> \
                       <v1:indCode>2</v1:indCode> \
                    </v1:pmt> \
                 </v1:cust> \
              </v1:UpdtRecurrProfRequest> \
          </SOAP-ENV:Body> \
        </SOAP-ENV:Envelope>' ;
        jQuery.ajax({
            type: "POST",
            url: wsUrl,
            contentType: "text/xml; charset=\"utf-8\"",
            dataType: "xml",
            data: soapRequest,
            //processData: false,
            //async:true,
            headers: {
                SOAPAction: "UpdtRecurrProf"
            },
            complete: function (xmlHttpRequest) {
                alert(xmlHttpRequest.responseXML);
            },

        });

    }

我尝试使用此链接致电,然后它给了我正确的答复。

我没有肥皂方面的专业知识。 如果有人可以从这里帮助我,我将不胜感激。

只需与邮递员检查您的请求-请求本身就可以满足一切要求。 这是我的回应:

<?xml version='1.0' encoding='UTF-8'?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
    <S:Body>
        <ns2:UpdtRecurrProfResponse xmlns="http://postilion/realtime/portal/soa/xsd/Faults/2009/01" xmlns:ns2="http://postilion/realtime/merchantframework/xsd/v1/">
            <ns2:custId>1450956517822188336</ns2:custId>
            <ns2:pmtId>1450956517853193808</ns2:pmtId>
            <ns2:rspCode>00</ns2:rspCode>
        </ns2:UpdtRecurrProfResponse>
    </S:Body>
</S:Envelope>

出现问题是因为您使用了javascript,并且相同的来源策略不允许您请求与您的域不同的域-这有助于防止XSS攻击。

但是,如果远程主机提供了CORS标头,例如Access-Control-Allow-Origin: * ,它允许所有域都请求它,但它可以返回到该标头,但是它不会返回此标头案件:

Cache-Control → private
Content-Encoding → gzip
Content-Type → text/xml;charset=utf-8
Date → Thu, 24 Dec 2015 11:28:37 GMT
Server → WebServer
Transfer-Encoding → chunked

另外,您应该在浏览器控制台中看到此错误消息,该消息批准了我的建议。

对预检请求的响应未通过访问控制检查:所请求的资源上不存在“ Access-Control-Allow-Origin”标头

因此,问题不在于SOAP请求本身,而是您尝试通过javascript请求它。 通过后端(例如PHP)发出请求-它应该可以顺利进行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM