[英]cURL error 6: Couldn't resolve host - 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()
人们将如何进行进一步调试?
目前,我愿意接受任何建议。
任何提示/建议/帮助将不胜感激!
这里的问题是$ url不是有效的url,实际上,您的$ url变量似乎包含html。 然后您告诉curl连接到...此html,作为url,curl表示找不到该域。 请尝试提供有效的网址(例如, hhtp://example.org
)作为$ url参数,它应该可以正常工作。
这里的问题是,至少在第三个示例中,您尝试设置响应的verify选项
您可以像这样禁用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;
}
在所有Guzzle的示例中,您都具有'force_ip_resolve' => 'v4',
,但对于cURL示例,没有相同的选项。 除非您确实需要,否则请尝试将其删除。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.