PHP soap客户端错误:未知的WSDL扩展名

时间:2017-02-08 19:06:14

标签: php web-services soap wsdl client

我做了一些研究,但没有为此找到解决方案。我有一个PHP SOAP客户端,我尝试建立与SAP WebService的连接,但是在wsdl中有一个必需的策略,当我尝试用PHP创建客户端时,我不知道如何设置。这是WSDL的一部分:

<wsdl:definitions xmlns:wsdl="http://schemas..." xmlns:wsu="http://doc....xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:p1="http..." targetNamespace="http..." name="SI_Sucursal_OS">
    <wsdl:documentation/>
    <wsp1_2:UsingPolicy xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" wsdl:required="true"/>
    <wsp1_2:Policy xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" wsu:Id="OP_SI_Sucursal_OS"/>
    <wsdl:types>...

错误:

Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Unknown required WSDL extension 'http://schemas.xmlsoap.org/ws/2004/09/policy' in ...

客户代码:

ini_set('soap.wsdl_cache_enabled', 0);
ini_set('soap.wsdl_cache_ttl', 900);
ini_set('default_socket_timeout', 15);

$user     = 'user';
$password = 'password';
$wsdl     = 'http:...';

$SOAP_CONFIG = array(
    'login' => $user,
    'password' => $password,
    'authentication' => SOAP_AUTHENTICATION_BASIC,
    'soap_version' => SOAP_1_1,
    'connection_timeout' => 15,
    'encoding' => 'UTF-8'
);

$client = new SoapClient($wsdl, $SOAP_CONFIG);

另外,当我保存wsdl并更改部分时:

<wsp1_2:UsingPolicy ... wsdl:required="true"/>

false ,我可以创建客户端,但是他们想要使用网络服务的网址,而不是本地修改过的文件。 我已经检查过这里发布的解决方案:

PHP SoapClient: Unknown required WSDL extension

但它们似乎都不适用于我。

0 个答案:

没有答案