调用Facebook MarketingAPI时编码JSON字符串的URL

时间:2015-08-14 14:08:09

标签: php json facebook url-encoding

在PHP中调用API端点时,使用

在URL中作为参数传递有什么区别
$str = '{\'since\':\'2015-01-01\',\'until\':\'2015-01-22\'}';
'blahblah?access_token=xxx&time_range=' . $str;

 $str = '{\'since\':\'2015-01-01\',\'until\':\'2015-01-22\'}';
'blahblah?access_token=xxx&time_range=' . urlencode($str);

除了后者之外,URL更有可能变得“太长”?知道没有人会看到URL,我只想从API检索数据并输出到CSV

非常感谢

1 个答案:

答案 0 :(得分:0)

通过类似的东西:

$data = array("name" => "Hagrid", "age" => "36");                                                                    
$data_string = json_encode($data);                                                                                   

$ch = curl_init('http://api.local/rest/users');                                                                      
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                                                                     
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);                                                                  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                                                                      
curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
'Content-Type: application/json',                                                                                
'Content-Length: ' . strlen($data_string))                                                                       
);                                                                                                                   

$result = curl_exec($ch);

而不是通过GET请求在网址中传递此信息?

编辑:实际上,有人可以告诉我在哪里可以读取像-G这样的curl命令行标志,或者如何在PHP中实现以下内容?感谢

curl -G \
-d "fields=['impressions','campaign_group_name','cost_per_action_type']" \
-d "action_breakdowns=['action_type','action_carousel_card_name']" \
-d "level=adgroup" \
-d "access_token=<ACCESS_TOKEN>" \
"https://graph.facebook.com/<API_VERSION>/act_<AD_ACCOUNT_ID>/insights"