Как использовать веб-службу wsdl SOAP из PHP или ajax

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

<?php
$wsdl = "https://an.url?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).'</pre>';
?>

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

Как использовать веб-службу wsdl SOAP из PHP или ajax

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

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

<!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://an.url?wsdl';
    var soapMessage = '<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:com = "http://another.url/">';
    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.info(data);
        }
    });
}
</script>

</body>
</html>

Я не знаю, правильно ли я сейчас вызываю метод obtenerReporteFinal, но когда я нажимаю кнопку для вызова службы, она просто выдает эту ошибку: [![введите описание изображения здесь][4]][4]

Если «http://локальный хост» заблокирован, как мой поставщик веб-услуг может разрешить мне это?

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

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

Похоже, что URL-адрес, который вы используете, недействителен/правилен. Ошибка говорит, что клиент не может подключиться. Получив правильный URL-адрес для подключения, отправьте запрос созданному вами клиентскому объекту ($client в вашем примере). Вы упомянули obtenerReporteFinal, так что это будет $client->obtenerReporteFinal() с любыми параметрами, которые требуются функции в виде массива внутри ().

Dave 21.03.2019 16:49

@ Дэйв, спасибо за разъяснения по поводу метода. URL-адрес работает в инструменте SoapUI, поэтому я думаю, что это правильно.

Roberto Sepúlveda Bravo 21.03.2019 16:56

Дайте определение «работы». Я должен быть в состоянии «поразить» его с помощью браузера, но это не работает, поэтому я сделал комментарий о том, что он недействителен.

Dave 21.03.2019 16:58

@Dave Он возвращает ответ, если вы попытаетесь из SoapUI с тем же URL-адресом и данными «Usuario», «Clave», «Rut», «Dv» внутри «<com: obtenerReporteFinal>».

Roberto Sepúlveda Bravo 21.03.2019 18:42
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
4
549
0

Другие вопросы по теме