жрет версия 6.3
Если у меня есть это в моем классе
класс CURL {
public static function get($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT_MS, 1000);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); //<------ Note HERE
curl_setopt($ch, CURLOPT_VERBOSE, TRUE);
$result = curl_exec($ch);
curl_close($ch);
$result = json_decode($result, true);
return $result;
}
Если у меня есть это в моем классе
<?php
namespace App;
use Request,Auth;
use App\Log, App\Helper;
use GuzzleHttp\Exception\GuzzleException;
use GuzzleHttp\Client;
use GuzzleHttp\FORCE_IP_RESOLVE;
use GuzzleHttp\DECODE_CONTENT;
use GuzzleHttp\CONNECT_TIMEOUT;
use GuzzleHttp\READ_TIMEOUT;
use GuzzleHttp\TIMEOUT;
use GuzzleHttp\VERIFY;class CURL {
$client = new Client();
$options = [
'http_errors' => false,
'force_ip_resolve' => 'v4',
'connect_timeout' => 10,
'read_timeout' => 10,
'timeout' => 10,
'verify' => false
];
$result = $client->request('GET',$url,$options);
$result = json_decode((string) $result->getBody(), true);
return $result;
...
}
Как видите, я попробовал установить 'verify' => false
уже.
я получил
добавлять 'curl' => [ CURLOPT_SSL_VERIFYPEER => false ]
$client = new Client();
$options = [
'http_errors' => false,
'force_ip_resolve' => 'v4',
'connect_timeout' => 10,
'read_timeout' => 10,
'timeout' => 10,
'verify' => false,
'curl' => [ CURLOPT_SSL_VERIFYPEER => false ]
];
$result = $client->request('GET',$url,$options);
$result = json_decode((string) $result->getBody(), true);
return $result;
я получил
удаление 'force_ip_resolve' => 'v4',
$client = new Client();
$options = [
'http_errors' => false,
'connect_timeout' => 10,
'read_timeout' => 10,
'timeout' => 10,
'verify' => false
];
$result = $client->request('GET',$url,$options);
$result = json_decode((string) $result->getBody(), true);
return $result;
я получил
добавив эту строку $result = $result->getCurlOptions()->set(CURLOPT_SSL_VERIFYPEER, FALSE);
$client = new Client();
$options = [
'http_errors' => false,
'force_ip_resolve' => 'v4',
'connect_timeout' => 10,
'read_timeout' => 10,
'timeout' => 10,
'verify' => false
];
$result = $client->request('GET',$url,$options);
$result = $result->getCurlOptions()->set(CURLOPT_SSL_VERIFYPEER, FALSE);
$result = json_decode((string) $result->getBody(), true);
return $result;
я получил
Вызов неопределенного метода GuzzleHttp \ Psr7 \ Response :: getCurlOptions ()
Как можно пойти дальше и отладить это дальше?
Я открыт для любых предложений в данный момент.
Будем очень благодарны за любые советы / предложения / помощь по этому вопросу!
Проблема здесь в том, что вы пытаетесь установить опцию проверки в ответе, по крайней мере, для вашего третьего примера
Вы можете отключить проверку ssl в жрете так:
$client->getHttpClient()->setDefaultOption('verify', false);
— что на самом деле, у вас уже есть, поэтому в теории вам даже не нужна строка:
$result = $result->getCurlOptions()->set(CURLOPT_SSL_VERIFYPEER, FALSE);
Что касается # 2, curl указывает, что вы передаете HTML-код страницы в метод get, а не URL-адрес, следовательно, неизвестная ошибка хоста.
Вы также вызывали json_decode в теле ответа, который не является текстовым, вам нужно $response->getBody()->getContents();
, вот так
public static function get($url){
$options = [
'http_errors' => false,
'force_ip_resolve' => 'v4',
'connect_timeout' => 10,
'read_timeout' => 10,
'timeout' => 10,
'verify' => false
];
$client = new Client($options);
$result = $client->request('GET',$url);
$result = json_decode($result->getBody()->getContents(), true);
return $result;
}
проблема здесь в том, что $ url НЕ является действительным URL, на самом деле, кажется, что ваша переменная $ url содержит html. затем вы указываете curl подключиться к … этому html, как url, и curl говорит, что не может найти этот домен. попробуйте дать действительный URL (например, hhtp://example.org
) как параметр $ url, и он должен работать нормально.
У тебя есть 'force_ip_resolve' => 'v4',
во всех примерах Guzzle, но не имеют такой же опции для примера cURL. Попробуйте удалить его, если вам это действительно не нужно.