无法从webservice获得响应

时间:2015-08-20 15:11:53

标签: javascript jquery html

我需要从以下网站验证增值税ID http://ec.europa.eu/taxation_customs/vies/vatRequest.html 我正在使用bwlow代码访问上述网站的web服务,但没有使用

<html>
<head>
    <title></title>
    <script src="jquery-1.8.2.js"></script>
    <script type="text/javascript">

        $(document).ready(function () {
            $("#BTNSERVICE").click(function (event) {
                var webserUrl = "http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl";
                var soapRequest =
'<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" \
xmlns:urn="urn:ec.europa.eu:taxud:vies:services:checkVat:types">\
    <soapenv:Header/>\
    <soapenv:Body>\
       <urn:checkVat>\
          <urn:countryCode>MS</urn:countryCode>\
          <urn:vatNumber>TESTVATNUMBER</urn:vatNumber>\
       </urn:checkVat>\
    </soapenv:Body>\
 </soapenv:Envelope>';
                $.ajax({
                    type: "POST",
                    url: webserUrl,
                    contentType: "text/xml",
                    dataType: "xml",
                    data: soapRequest,
                    success: SuccessOccur,
                    error: ErrorOccur

                });
            });
        });
        function SuccessOccur(data,status, req) {

        alert(status);
            if (status == "success")
            {

                alert('sucess');
                alert(req.responseText);
                }
        }
        function ErrorOccur(data,status, req) {
        alert(status);
            alert(req.responseText + " " + status);
        }
    </script>
</head>
<body>
    <form runat="server">
    <button id="BTNSERVICE" runat="server" text="BTNSERVICE" />
    SAMPLE Application to test service
    </form>
</body>
</html>  

在运行上面的代码后,它实际上应该抛出&#34;不,输出无效&#34;但它会抛出错误,例如&#34;未定义的错误&#34;。不确定出了什么问题。

注意:我在上面的代码中发送的SOAP请求在下面的网站中提供 http://ec.europa.eu/taxation_customs/vies/vatRequest.html 在我出错的地方有人可以帮助我吗? 提前谢谢......

2 个答案:

答案 0 :(得分:1)

所以,正如我在评论中所说,问题出在同源政策中。请求的资源上没有“Access-Control-Allow-Origin”标头,因此除非您禁用CORS,否则无法直接从浏览器进行此调用(但您不会在生产中执行此操作)。

您需要做的是构建一个轻量级服务,通过该服务可以路由您的请求。您的服务将调用SOAP VAT Web服务并传回结果。您甚至可以利用这个机会在服务器端执行某些逻辑,并进一步简化客户端JavaScript调用。

如果你在服务器上使用JavaScript / NodeJs解决方案,我建议使用SOAP库而不是自己构建信封。查看:http://www.codeproject.com/Articles/12816/JavaScript-SOAP-Client

或者如果你想在JS中构建自己的:http://www.ibm.com/developerworks/webservices/library/ws-wsajax/

答案 1 :(得分:0)

尝试了SoapUI的请求并且工作了所以我建议两个更改:

  • 将请求URL更改为服务URL而不是WSDL。 POST应该是查询/ taxation_customs / vies / services / checkVatService
  • 将countryCode更改为ES,因为无法识别MS。

enter image description here