soap — Отдельные целевые IP и WSDL в PHP SoapClient

Видеокодер, который мне нужно запросить у PHP для проверки состояния и настроек, обеспечивает интерфейс SOAP.

Поставщик предоставляет файл WSDL, который включает в себя 15 схем с schemaLocation именование внешних URL. XSD-файлы также предоставляются поставщиком.

Поскольку система должна работать без общедоступного подключения к Интернету, я изменил весь импорт, чтобы он указывал на локальный URL, например

http://localhost/path_to_schemas/xml.xsd
http://localhost/path_to_schemas/settings.xsd
http://localhost/path_to_schemas/inputs.xsd

и так далее

Как мне использовать PHP SoapClient запросить кодировщик (и), используя локальный WSDL и схемы? Не могу найти никаких подсказок в документации PHP или в другом месте онлайн. В большинстве примеров предполагается, что файл WSDL будет находиться на запрашиваемом устройстве, а в этом случае его нет.

Поэтому я попытался указать WSDL в качестве локального хоста и указать в параметрах целевой компьютер и пространство имен:

$options = array("location" => "192.168.2.161", "uri" => "http://www.appeartv.com/automation/v1");

$sp = new SoapClient("http://localhost/visor/options/optAppearControl/webgui/be/atvSoapSchema/ATV.wsdl", $options);
$result = $sp->getModuleList();

Тем не менее, это не с исключением «Невозможно разобрать URL» на getModuleList() линия.

Apache error_log:

[Sat Nov 10 06:55:05 2018] [error] [client 192.168.2.10]
PHP Fatal error:  Uncaught SoapFault exception: [HTTP] Unable to parse URL
in /usr/local/webgui/be/testSoap.php:16
Stack trace:
#0 [internal function]: SoapClient->__doRequest('<?xml version="...', '192.168.2.161', 'getModuleList', 1, 0)
#1 /usr/local/webgui/be/testSoap.php(16): SoapClient->__call('getModuleList', Array)
#2 /usr/local/webgui/be/testSoap.php(16): SoapClient->getModuleList()
#3 {main}
thrown in /usr/local/webgui/be/testSoap.php on line 16

Какой URL не может быть проанализирован?

PHP документы скажи это:

место нахождения URL-адрес сервера SOAP, на который отправляется запрос, и URI
является целевым пространством имен службы SOAP

Я немного запутался в том, что uri должен быть установлен в. «Целевое пространство имен» в файлах xsd и wsdl показывает:

<?xml version="1.0" encoding="UTF-8"?>
<definitions
xmlns="http://schemas.xmlsoap.org/wsdl/"xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"xmlns:tns="http://www.appeartv.com/automation/v1/wsdl"xmlns:atv="http://www.appeartv.com/automation/v1"name="AppearTV_Automation"targetNamespace="http://www.appeartv.com/automation/v1/wsdl">
<types>
<schema xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://www.appeartv.com/automation/v1"schemaLocation="http://localhost/visor/options/optAppearControl/webgui/be/atvSoapSchema/automationInterface.xsd" />
</schema>
</types>

<!-- system.xsd -->
<message name="getModuleList">
<part name="foo" element="atv:getModuleList"/>
</message>
and so on...

Так и целевое пространство имен atv (используется в файлах xsd) или http://www.appeartv.com/automation/v1/wsdl (как показано в файле wsdl) или http://www.appeartv.com/automation/v1 (как показано в файлах xsd)

Я перепробовал все, но все показывают одно и то же сообщение об ошибке.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector