1

如何使用 HTTPS Web 服务和 .PEM 客户端证书创建 PHP SOAP?

当我这样做时,我收到以下错误:

数组(2){[0]=>字符串(38)“testeResponse teste(teste $parameters)”[1]=>字符串(38)“testeResponse teste(teste $parameters)”}

致命错误:未捕获的 SoapFault 异常:[wsse:InvalidSecurity] D:\Inetpub\wwwroot\SOAP\index.php:47 中缺少 SOAP 标头 堆栈跟踪:#0 [内部函数]:SoapClient->__call('teste', Array ) #1 D:\Inetpub\wwwroot\SOAP\index.php(47): SoapClient->teste(Array) #2 {main} 在第 47 行的 D:\Inetpub\wwwroot\SOAP\index.php 中抛出

编码:

$client = new SoapClient($wsdl, array(
    'local_cert'  => $localCert, 
     'passphrase' => $passphrase, 
     'style'      => SOAP_DOCUMENT, 
     'use'        => SOAP_LITERAL, 
     'exceptions' => true, 
     'trace'      => true)
);
$something = $client->teste(array());
echo $something->testeResult;
4

1 回答 1

1

该警告与 PEM 证书或 SSL 无关。很简单:

缺少 SOAP 标头

您可以SOAPHeader在 PHP 手册中找到。PHP 手册中有一些使用示例和用户贡献的注释,本网站也有。例如:

$auth = array(
    'UserName' => 'USERNAME',
    'Password' => 'PASSWORD',
    'SystemId' => array('_'=> 'DATA', 'Param' => 'PARAM'),
);
$header = new SoapHeader('NAMESPACE','Auth',$auth,false);
$client->__setSoapHeaders($header);

如果您遇到问题,请告诉我。

于 2012-12-19T21:24:41.037 回答