ошибка 6 cURL: не удалось разрешить хост — Guzzle

жрет версия 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 ()


Как можно пойти дальше и отладить это дальше?


Я открыт для любых предложений в данный момент.

Будем очень благодарны за любые советы / предложения / помощь по этому вопросу!

0

Решение

Проблема здесь в том, что вы пытаетесь установить опцию проверки в ответе, по крайней мере, для вашего третьего примера

Вы можете отключить проверку 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;
}
1

Другие решения

проблема здесь в том, что $ url НЕ является действительным URL, на самом деле, кажется, что ваша переменная $ url содержит html. затем вы указываете curl подключиться к … этому html, как url, и curl говорит, что не может найти этот домен. попробуйте дать действительный URL (например, hhtp://example.org ) как параметр $ url, и он должен работать нормально.

1

У тебя есть 'force_ip_resolve' => 'v4', во всех примерах Guzzle, но не имеют такой же опции для примера cURL. Попробуйте удалить его, если вам это действительно не нужно.

1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector