我正在尝试发送带有 DER 证书的 SOAP - PHP 请求(这意味着证书没有 privateKey)但没有成功。
$local_cert = FULL_PATH_TO_MY_CERT;
$client = new SoapClient($wsdl, array(
'local_cert' => $local_cert,
'trace' => 1,
'exceptions' => 1,
'soap_version' => SOAP_1_1,
'encoding' => 'ISO-8859-1',
'compression' => (SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP),
'location' => 'https://webserviceurl:port/ws/servlet/ws'
));
只有我收到此错误:
警告 (2):SoapClient::SoapClient() [soapclient.soapclient]:无法设置私钥文件 `PATHTOMYLOCALCERT' [APP\Vendor\WebServices\MyWS.php,第 206 行]
警告 (2):SoapClient::SoapClient() [soapclient.soapclient]: 未能创建 SSL 句柄 [APP\Vendor\WebServices\MyWS.php,第 206 行]
警告 (2): SoapClient::SoapClient() [soapclient.soapclient]: 无法启用加密 [APP\Vendor\WebServices\MyWS.php,第 206 行]
警告 (2): SoapClient::SoapClient(https://webserviceurl:port/ws/servlet/ws?wsdl) [soapclient.soapclient]: 无法打开流: 操作失败 [APP\Vendor\WebServices\MyWS.php,第206行]
警告 (2): SoapClient::SoapClient() [soapclient.soapclient]: I/O 警告: 未能加载外部实体 "https://webserviceurl:port/ws/servlet/ws?wsdl" [APP\Vendor\WebServices \MyWS.php,第 206 行]
但我发现了一个使用函数 file_get_contents($local_cert); 的小技巧(在 php.net 中);错误消失了。
但是一个新的错误又来了。
结果:字符串(773)“读取前缀错误:Action.Execute”
我的意思是......上面的这个错误......来自WebService?因为它无法通过我的请求进行身份验证?
谢谢大家。(感谢您的回答)