1

私は個人的なプロジェクトで少し迷子になっていて、助けを探しています。特定のURLのGoogle+カウントを取得するcURLコードを見つけました。これは、取得しようとしているURLをハードコーディングするときにうまく機能します。GETを使用してフォームデータに基づいてこのスクリプトを実行しようとしています。以下の動作例と非動作例を参照してください。また、変更するコード行も太字にしています。

WORKS

*$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 を使用した最近のプロジェクトの 1 つで、同様の問題が発生しました。

cURL を使用して URL を読み込もうとしたときに、URL のhttp://および/またはwww.一部を含める必要があることがわかりました。それらがないと、cURL は URL を開くことができません。最終的に、すべてのサイトが 1 つの特定の組み合わせに応答するわけではないため、これらのさまざまな組み合わせを試すスクリプトをコーディングしました。

あなたの最後のコメントから、あなたの URL にvar_dumpはこれらのどちらも含まれていないことがわかります。それらを追加すると、問題が解決することを願っています。

于 2012-11-06T14:32:03.577 に答える