我正在尝试从我的 Yii 应用程序调用外部 API
$client = new Client();
$response = $client->createRequest()
->setMethod('POST')
->setUrl('https//externalApi')
->setData(['name' => 'John Doe', 'email' => '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="2a404542444e454f6a4f524b475a464f04494547" rel="noreferrer noopener nofollow">[email protected]</a>'])
->send();
if ($response->isOk) {
var_dump($response);
}
但我得到:
HTTP Client Exception: fopen(): Peer certificate CN=`****' did not match expected CN=`****'
我认为这与 SSL 证书有关。 有没有办法忽略验证?
最佳答案
我找到了解决方案,您需要设置选项以禁用带有 ssl 前缀的 SSL 检查,因此请求如下:
$client = new Client();
$response = $client->createRequest()
->setMethod('POST')
->setUrl('https//externalApi')
->setData(['name' => 'John Doe', 'email' => '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="98f2f7f0f6fcf7fdd8fde0f9f5e8f4fdb6fbf7f5" rel="noreferrer noopener nofollow">[email protected]</a>'])
->setOptions([
'sslallow_self_signed' => true,
'sslverify_peer_name' => false,
])
->send();
if ($response->isOk) {
var_dump($response);
}
关于api - YII2 client->createRequest() 忽略验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66151936/