如何在Guzzle 5中忽略无效的SSL证书错误

5jdjgkvh  于 9个月前  发布在  其他
关注(0)|答案(5)|浏览(185)

这应该是一件容易的事情,我可以在Guzzle 3中找到很多关于如何做到这一点的参考资料,但它们在Guzzle 5中不起作用。
到目前为止我在做什么:

$this->client = new GuzzleClient(['defaults' => [
    'verify' => 'false'
]]);

字符串
当我发送一个请求时,我得到了这个错误:

RequestException in RequestException.php line 51:
SSL CA bundle not found: false


我在谷歌上找不到任何有用的参考资料。如果我可以访问curl选项,那么我可以尝试类似于这里建议的解决方案(这是Guzzle 3,因此它不起作用):http://inchoo.net/dev-talk/symfony2-guzzle-ssl-self-signed-certificate/,其中相关的部分是:

$req->getCurlOptions()->set(CURLOPT_SSL_VERIFYHOST, false);
$req->getCurlOptions()->set(CURLOPT_SSL_VERIFYPEER, false);

toiithl6

toiithl61#

你应该使用

$this->client = new GuzzleClient(['defaults' => [
    'verify' => false
]]);

字符串
即布尔值false,而不是字符串'false'
文档在这里:https://docs.guzzlephp.org/en/5.3/clients.html#verify
注意事项:一些人给出了其他适用于Guzzle 6+的答案。如果你使用这些版本,它们是很好的答案(但最初的问题明确是关于Guzzle 5的)。

5vf7fwbs

5vf7fwbs2#

尝试使用更新的版本,它可以工作:

$this->client = new GuzzleClient(['base_uri' => 'https://api.example.com/', 'verify' => false ]);

字符串
或者更简单的版本:

$this->client = new GuzzleClient(['verify' => false ]);


测试版本6.2-dev。

jogvjijk

jogvjijk3#

实际版本为正确版本

$this->client = new GuzzleClient(['verify' => false ]);

字符串
在2018年,这是行不通的:

$this->client = new GuzzleClient(['defaults' => [
    'verify' => false
]]);

d4so4syb

d4so4syb4#

你可以在新的laravel客户端版本中使用

$http = new Client(['verify' => false]);

字符串

mlnl4t2r

mlnl4t2r5#

对于使用Laravel HTTP Client的人来说,下面的解决方案对我有效

use GuzzleHttp\Client;
 use Illuminate\Support\Facades\Http;

 Http::baseUrl('http://example.com')
        ->setClient(new Client(['verify' => false]))
        ->get('user/lits.htm',[
          'page_no' => '5',
          'per_page' => '25',
        ])
        ->json();

字符串

相关问题