1

我在个人项目中迷失了方向并寻求帮助。我找到了一个 cURL 代码,它可以获取特定 URL 的 Google+ 计数,并且在对您尝试获取的 url 进行硬编码时效果很好。我正在尝试使用 GET 基于表单数据运行此脚本。请参阅下面的工作和非工作示例。我还将我正在更改的代码行加粗。

作品

*$url = "http://mashable.com";

 $ch = curl_init();  
 curl_setopt($ch, CURLOPT_URL, "https://clients6.google.com/rpc?key=AIzaSyCKSbrvQasunBoV16zDH9R33D88CeLr9gQ");
 curl_setopt($ch, CURLOPT_POST, 1);
 curl_setopt($ch, CURLOPT_POSTFIELDS, '[{"method":"pos.plusones.get","id":"p","params":{"nolog":true,"id":"' . $url . '","source":"widget","userId":"@viewer","groupId":"@self"},"jsonrpc":"2.0","key":"p","apiVersion":"v1"}]');
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json'));


 $curl_results = curl_exec ($ch);
 curl_close ($ch);

 $parsed_results = json_decode($curl_results, true);

 echo $parsed_results[0]['result']['metadata']['globalCounts']['count']; 

不工作

$url = $_GET['url'];

 $ch = curl_init();  
 curl_setopt($ch, CURLOPT_URL, "https://clients6.google.com/rpc?key=AIzaSyCKSbrvQasunBoV16zDH9R33D88CeLr9gQ");
 curl_setopt($ch, CURLOPT_POST, 1);
 curl_setopt($ch, CURLOPT_POSTFIELDS, '[{"method":"pos.plusones.get","id":"p","params":{"nolog":true,"id":"' . $url . '","source":"widget","userId":"@viewer","groupId":"@self"},"jsonrpc":"2.0","key":"p","apiVersion":"v1"}]');
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json'));


 $curl_results = curl_exec ($ch);
 curl_close ($ch);

 $parsed_results = json_decode($curl_results, true);

 echo $parsed_results[0]['result']['metadata']['globalCounts']['count'];
4

1 回答 1

0

在我最近使用 cURL 的一个项目中,我遇到了类似的问题。

事实证明,在尝试使用 cURL 加载 URL 时,我必须包含 URL 的http://和/或www.部分。没有它们,cURL 将无法打开 URL。我最终编写了一个脚本来尝试这些不同的组合,因为并非所有站点都响应一个特定的组合。

我从您的上一条评论中看到,您的 URLvar_dump不包含这些。如果您添加它们,那么希望这将解决您的问题。

于 2012-11-06T14:32:03.577 回答