如何从 SoapClient 中的信封中删除属性

How to remove attribute from envelope in SoapClient

尝试使用PHP-s自己的SoapClient,但遇到了障碍。

我正在使用 __soapCall 发出请求,但查询失败,因为设置了 encodingStyle 属性:

$client = new SoapClient(NULL, array(
    'location' => 'http://myUri.com', 
    'uri' => 'http://namespace.com/producer'
));

$result = $client->__soapCall('GET_ALL');

现在做 $client->__getLastRequest();像这样显示 Envolope 节点:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"     
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> 

如何删除 SOAP-ENV:encodingStyle 属性并仍然使用 __soapCall(); ?

显然我在 SoapClient 构造中缺少 "use" 参数。解决方案:

$client = new SoapClient(NULL, array(
    'location' => 'http://myUri.com', 
    'uri' => 'http://namespace.com/producer',
    'use' => SOAP_LITERAL,
));