2015-08-20 4 views
0

У меня есть требование, чтобы проверить идентификационный номер плательщика НДС снизу сайта http://ec.europa.eu/taxation_customs/vies/vatRequest.html Я ударять WebService на указанном выше сайте с кодом bwlow, но не использоватьНе удалось получить ответ от веб-сервиса

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

После запуска выше кода, на самом деле предполагается, что он «выбрал», «Недопустимый вывод», но это ошибка, как «неопределенная ошибка». Не уверен, что пошло не так.

Примечание: запрос на SOAP, который я послал в коде выше была представлена ​​в ниже веб-сайте http://ec.europa.eu/taxation_customs/vies/vatRequest.html Может кто-нибудь помочь мне, где я ошибся? Спасибо заранее ...

+1

Выполнить что jsfiddle через HTTP и на кнопку мыши, вы должны получить: 'XMLHttpRequest не может загрузить HTTP: //ec.europa. ес/taxation_customs/соперничает/checkVatService.wsdl. В запрошенном ресурсе нет заголовка «Access-Control-Allow-Origin». Происхождение «http://fiddle.jshell.net», следовательно, не допускается. » –

+0

скрипка из комментария об удалении выше: http://jsfiddle.net/alfabravoteam/fxj4r3hu/ –

ответ

1

Итак, как я уже говорил в моем комментарии проблема в Same Origin Policy. На запрошенном ресурсе нет заголовка «Access-Control-Allow-Origin», поэтому вы не можете выполнить этот вызов непосредственно из браузера, если вы не отключите CORS (но вы не собираетесь делать это на производстве).

Что вам нужно сделать, это создать легкий сервис, с помощью которого вы сможете направлять свои запросы. Ваша служба будет вызывать веб-службу VAT SOAP и передавать результаты. Вы даже можете использовать возможность сделать некоторую логику на стороне сервера и еще больше упростить ваш клиентский вызов JavaScript.

Если вы используете решение JavaScript/NodeJs на сервере, я предлагаю использовать SOAP-библиотеку вместо того, чтобы самостоятельно создавать конверт. Проверьте: http://www.codeproject.com/Articles/12816/JavaScript-SOAP-Client

Или, если вы хотите построить свой собственный в JS: http://www.ibm.com/developerworks/webservices/library/ws-wsajax/

+0

Это хороший улов! – Alfabravo

+0

@ Unglückspilz: Я понятия не имею, как это сделать. Не могли бы вы рассказать об – user3263086

+0

Поскольку вы знаете какой-то JavaScript, посмотрите [Node.js] (https://nodejs.org/). Как вы можете видеть на домашней странице, для создания простого веб-сервиса требуется всего несколько строк JavaScript. После того, как вы изучили основы, напишите сервис, в который вы передадите параметры (номер НДС, код страны и т. Д.) Для проверки номера налогоплательщика, затем вызовите веб-службу SOAP из своей службы NodeJs и передайте ответ клиенту (возможно, очистить серверную часть ответа и вернуть простой JSON). Если вы думаете, что я помог, пожалуйста, отметьте мой ответ как принятый. Удачи! –

0

Пробовал запрос на SoapUI и работал, так что я предлагаю два изменения:

  • Изменить запрос URL для сервиса URL вместо WSDL. POST должен запрашивать/taxation_customs/vies/services/checkVatService
  • Измените код страны на ES, потому что MS не распознается.

enter image description here

Смежные вопросы