鍍金池/ 問答/PHP  Linux/ PHP 用 SoapClient 訪問 遠程https wsdl接口。

PHP 用 SoapClient 訪問 遠程https wsdl接口。

PHP 用 SoapClient 訪問 遠程wsdl 接口
http 可以成功
https 調(diào)不通

報錯
SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://...:/xx/xx/xx?wsdl' : failed to load external entity "https://...:/xx/xx/xx?wsdl"

好像證書的原因, 但是 加上證書 、繞過證書的方法都不行

有沒有朋友熟悉 SoapClient 實例化是的 第二參數(shù)選項的 環(huán)境 linux、php7

求助,網(wǎng)上帖子都翻爛了...

回答
編輯回答
咕嚕嚕

你先試直接用curl訪問這個https地址, 看看報錯信息.

$ch = curl_init('https://...:/xx/xx/xx?wsdl');

curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_VERBOSE => 1,
    CURLOPT_CERTINFO => 1,
]);

curl_exec($ch);

看看是不是openssl.cafile(php.ini中)設置有問題.
如果是這個問題, 到https://curl.haxx.se/docs/cae... 這兒下載文件,
設置curl_setopt(CURLOPT_CAINFO, '下載的.pem文件')
或者直接設置openssl.cafile(php.ini中)

另外, 極有可能你的字段沒寫對, 是http, 不是https

2018年2月18日 13:19
編輯回答
空痕
libxml_disable_entity_loader(false);
$opts = array(
    'ssl'   => array(
            'verify_peer'          => false
        ),
    'https' => array(
            'curl_verify_ssl_peer'  => false,
            'curl_verify_ssl_host'  => false
     )
);
$streamContext = stream_context_create($opts);
$client = new SoapClient("https://urlToSoapWs",
  array(
      'stream_context'    => $streamContext
  ));

這個試過了 不行...

2018年4月12日 14:23