php:使用cUrl请求成功,但是Guzzle失败了

时间:2016-05-22 06:47:22

标签: php curl guzzle

我正在尝试在我的项目中使用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

知道为什么这不起作用吗?

2 个答案:

答案 0 :(得分:0)

这对我来说很好(使用guzzle 6.2.0):

$client = new \GuzzleHttp\Client();
$response = $client->request('GET','http://google.com');
echo $response->getBody()->getContents();

或者,看看这篇文章,检查你的服务器是否返回类似的东西,这可能会导致问题。

https://www.bountysource.com/issues/32019967-breaking-change-in-guzzle-6-when-receiving-a-204-no-content-response-with-no-body

答案 1 :(得分:0)

我的猜测是 CURLOPT_RETURNTRANSFER,因为我发现这个问题正在寻找相同问题的答案。

最终在这个 Github 问题的底部得到了我的答案:https://github.com/guzzle/guzzle/issues/2048

TL;DR – 设置 CURLOPT_FILE 时 Guzzle 正在破坏 CURLOPT_WRITEFUNCTIONCURLOPT_RETURNTRANSFERReading curl request progress headers with Guzzle

中的更多详细信息