Как использовать веб-сервис wsdl SOAP из PHP или ajax - PullRequest
2 голосов
/ 21 марта 2019

Я пытаюсь использовать веб-сервис SOAP из PHP или AJAX, предполагается, что мой провайдер ws разрешил мой VPS IP, поэтому веб-сервис работает с SoapUI , но мне нужно использовать данные на моей веб-странице (работает в моем VPS), поэтому я попытался с помощью этого PHP:

<code><?php
$wsdl = "https://qws.equifax.cl/osb-efx/equifax/CommercialReportPublicService?wsdl";
$options = array(
     'Usuario' => "anUser",
     'Clave' => "aPassword",
     'Rut' => "someData",
     'Dv' => "someMoreData"
);
libxml_disable_entity_loader(false);
$client = new SoapClient($wsdl, $options);
echo '<pre>'.print_r($client,true).'
'; ?>

Но выдает эту ошибку:

enter image description here

Дело в том, что я пытаюсь получить доступ к методу, называемому "obtenerReporteFinal", и я не знаю, где это указать, и, возможно, это первая ошибка.

Итак, я искал другой способ использования веб-службы SOAP и нашел эту запись с использованием ajax. Так как у меня на VPS есть веб-страница PHP + JavaScript, я попробовал это:

<!DOCTYPE html>
<html>
<head>
</head>
<body>


<input type="button" id="btnQlo" value="Call Web Service" />


<script src="http://code.jquery.com/jquery-3.3.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
    jQuery.support.cors = true;
    $(document).on("click","#btnQlo",function(){CallService()});
});


function CallService()
{
    var webServiceURL = 'https://qws.equifax.cl/osb-efx/equifax/CommercialReportPublicService?wsdl';
    var soapMessage = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:com="http://commercialreport.datos.wsecrp01.equifax.cl/">';
    soapMessage+='<soapenv:Header/>';
        soapMessage+='<soapenv:Body>'
            soapMessage+='<com:obtenerReporteFinal>'
                soapMessage+='<!--Optional:-->'
                    soapMessage+='<arg0>'
                    soapMessage+='<Usuario>anUser</Usuario>'
                    soapMessage+='<Clave>aPassword</Clave>'
                    soapMessage+='<Rut>someData</Rut>'
                    soapMessage+='<Dv>someMoreData</Dv>'
                soapMessage+='</arg0>'
            soapMessage+='</com:obtenerReporteFinal>'
        soapMessage+='</soapenv:Body>'
    soapMessage+='</soapenv:Envelope>';

    $.ajax({
        url: webServiceURL, 
        type: "POST",
        crossDomain : true,
        dataType: "xml", 
        data: soapMessage,
        processData: false,
        contentType: "text/xml; charset=\"utf-8\"",
        success: function(data){
            console.log(data);
        }
    });
}
</script>

</body>
</html>

Я не знаю, правильно ли я сейчас вызываю метод "obtenerReporteFinal", но когда я нажимаю кнопку для вызова службы, она просто выдает эту ошибку: enter image description here

Если 'http://localhost' заблокирован, как мой поставщик веб-услуг может разрешить это для меня?

Итак, как я могу заставить это работать в любом из вышеперечисленных случаев? Я действительно сбит с толку, так как я впервые использую веб-службу SOAP.

РЕДАКТИРОВАТЬ : я должен реализовать SSL в моем VPS?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...