我做了一些研究,但没有找到解决方案 . 我有一个PHP SOAP客户端,我尝试 Build 与SAP WebService的连接,但是当我尝试在PHP中创建客户端时,wsdl中有一个我不知道如何设置的必需策略 . 这是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 ,我可以创建客户端,但是它的想法是's to use the url location of the web service, not a local modified file. I'已经检查了这里发布的解决方案:

PHP SoapClient: Unknown required WSDL extension

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