我需要从PHP查询视频编码器的状态和设置,它提供了一个SOAP接口。
schemaLocation
命名外部URL。XSD文件也由供应商提供。
由于系统必须在没有公共internet连接的情况下运行,因此我修改了所有导入以指向本地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指定为localhost,并将目标计算机和命名空间放在选项中:
$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();
但是,由于在
getModuleList()
行。
Apache错误日志:
[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
这个
PHP docs
位置
乌里
是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文件所示)??
我已经试过了,但都显示了相同的错误信息。