我正在尝试使用以下代码设置Soap客户端:
$wsdl = 'https://domain.com/?wsdl';
$endpoint = 'https://domain.com';
$certificate = dirname(__FILE__) . '/CertWithKey.pem';
$password = 'pwd';
$options = array(
'location' => $endpoint,
'keep_alive' => true,
'trace' => true,
'local_cert' => $certificate,
'passphrase' => $password,
'cache_wsdl' => WSDL_CACHE_NONE
);
try {
$soapClient = new SoapClient($wsdl, $options);
} catch(Exception $e) {
var_dump($e);
}
我获得了一个带有.crt认证文件的.p12密钥文件.使用openssl我已将.p12文件转换为.pem文件,然后将其与.crt文件合并. CertWithKey.pem看起来不错,文件中有两个证书块.
无论我尝试做什么,我都会收到SOAP-ERROR消息的异常:解析WSDL:无法从’https://domain.com/?wsdl’加载:无法加载外部实体“https:/ /domain.com/?wsdl”.
在与远程方打电话后,他们确认请求正在进入,但他们正在记录此错误:ssl握手被系统中断[提示:在浏览器中按下停止按钮?!].
由于到目前为止我没有在网上找到任何有用的信息,我想让你们对这个问题有所了解.
有什么建议可以尝试吗?我正在运行PHP 5.3.8,并且服务器的IP地址在远程控制台的防火墙中列为白色.