我正在尝试在我的项目中使用Guzzle来读取URL中的值。请求的URL只返回一个数字,没有html标题,正文或任何内容。首先我只是使用curl来阅读它,并且已经想通了我需要设置2个额外的cUrl选项来进行成功读取。我的代码看起来像这样,并且像魅力一样工作:
{"persons": [
{
"personContact": "+91-9997725251",
"personDisplayPicture": "https://fbcdn-sphotos-b-a.akamaihd.net/hphotos-ak-xtf1/v/t1.0-9/1509974_10205886752870556_6275779368926452443_n.jpg?oh=d407cc6c85c581f4ee96cd65ea15a171\u0026oe=55ECD16C\u0026__gda__=1443235524_024ba60447125011575b739fb45d23c4",
"personEmail": "samarthagarwal@live.com",
"personName": "Samarth Agarwal"
},
{
"personContact": "+91-9874563210",
"personDisplayPicture": "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-xfp1/v/t1.0-1/p160x160/10997379_828487523879435_5609581450404507062_n.jpg?oh=109f958adce1bb72754ed1772e598893&oe=56276727&__gda__=1441608268_136ec1af8e25e4364909decbd724f26a",
"personName": "Apoorva Agarwal",
"personEmail": "apoorva@gmail.com"
}
]}
现在我正在使用guzzle,我想如果我只使用相同的cUrl选项我会好的,所以我创建了这段代码:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://192.168.2.5/temp');
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
echo $value = curl_exec($ch);
但是,这段代码给了我这个错误:
CurlFactory.php第187行中的RequestException:cURL错误0:cURL 要求重试3次,但没有成功。最有可能的 失败的原因是cURL无法倒回身体 请求和后续重试导致相同的错误。打开 调试选项,看看出了什么问题。看到 https://bugs.php.net/bug.php?id=47204了解更多信息。 (看到 http://curl.haxx.se/libcurl/c/libcurl-errors.html)
知道为什么这不起作用吗?
答案 0 :(得分:0)
这对我来说很好(使用guzzle 6.2.0):
$client = new \GuzzleHttp\Client();
$response = $client->request('GET','http://google.com');
echo $response->getBody()->getContents();
或者,看看这篇文章,检查你的服务器是否返回类似的东西,这可能会导致问题。
答案 1 :(得分:0)
我的猜测是 CURLOPT_RETURNTRANSFER
,因为我发现这个问题正在寻找相同问题的答案。
最终在这个 Github 问题的底部得到了我的答案:https://github.com/guzzle/guzzle/issues/2048
TL;DR – 设置 CURLOPT_FILE
时 Guzzle 正在破坏 CURLOPT_WRITEFUNCTION
和 CURLOPT_RETURNTRANSFER
; Reading curl request progress headers with Guzzle