我正在尝试使用 DER 证书(即证书没有私钥)发送带有 SOAP - PHP 请求,但一直未成功。
$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,line 206]
警告(2):SoapClient :: SoapClient()[soapclient.soapclient]:未能创建SSL句柄[APP \ Vendor \ WebServices \ MyWS.php,line 206]
警告(2):SoapClient :: SoapClient()[soapclient.soapclient]:未能启用加密[APP \ Vendor \ WebServices \ MyWS.php,line 206]
警告(2):SoapClient :: SoapClient(https://webserviceurl:port/ws/servlet/ws?wsdl)[soapclient.soapclient]:无法打开流:操作失败[APP \ Vendor \ WebServices \ MyWS.php,line 206]
警告(2):SoapClient :: SoapClient()[soapclient.soapclient]:I / O警告:无法加载外部实体“https://webserviceurl:port/ws/servlet/ws?wsdl”[APP \ Vendor \ WebServices \ MyWS.php,line 206]
但我在php.net上发现了一个小技巧,使用函数file_get_contents($local_cert); 错误消失了。
但是,新的错误出现了。
结果:字符串(773)“读取前缀错误:Action.Execute”
我的意思是...上面的错误...是否来自Web服务? 因为它无法验证我的请求?
谢谢大家。 (感激你们的回答)