使用php curl的clicky api连接失败
我想创建一个url,用于连接“Clicky API”,如“”,为此我开发了一个cUrl代码,如下所示使用php curl的clicky api连接失败,php,curl,Php,Curl,我想创建一个url,用于连接“Clicky API”,如“”,为此我开发了一个cUrl代码,如下所示 $url = 'http://api.clicky.com/api/stats/4'; $info = array( 'site_id'=>'32145', 'sitekey'=>'94d117119dsfa', 'type'=>'visitors' ); $post_field_string = http
$url = 'http://api.clicky.com/api/stats/4';
$info = array(
'site_id'=>'32145',
'sitekey'=>'94d117119dsfa',
'type'=>'visitors'
);
$post_field_string = http_build_query($info, ',', '&');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_field_string);
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_HEADER,1);
curl_setopt($ch, CURLOPT_VERBOSE,1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Accept: application/json'));
curl_setopt($ch, CURLOPT_HTTPHEADER,array("Expect: "));
$exec = curl_exec($ch);
$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
$header = substr($response, 0, $header_size);
$body = substr($response, $header_size);
echo '<pre>';
print_r($exec);
$url='1!'http://api.clicky.com/api/stats/4';
$info=数组(
'site_id'=>'32145',
“sitekey”=>“94d117119dsfa”,
'类型'=>'访客'
);
$post_field_string=http_build_query($info,',','&');
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$URL);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);
curl_setopt($ch,CURLOPT_POSTFIELDS,$post_field_string);
卷曲设置($ch,卷曲设置桩,1);
curl_setopt($ch,CURLOPT_头,1);
curl_setopt($ch,CURLOPT_VERBOSE,1);
curl_setopt($ch,CURLOPT_HTTPHEADER,数组(
'内容类型:application/json',
“接受:应用程序/json”);
curl_setopt($ch,CURLOPT_HTTPHEADER,数组(“Expect:”);
$exec=curl\u exec($ch);
$header\u size=curl\u getinfo($ch,CURLINFO\u header\u size);
$header=substr($response,0,$header\u size);
$body=substr($response,$header\u size);
回声';
打印(exec);
但将以“资源id#2”的形式获得输出,何时签入检查窗口,响应将为
<?php
// show all errors comment it when in production
ini_set('display_startup_errors', 1);
ini_set('display_errors', 1);
error_reporting(-1);
//Allow from any origin or you can set your domain name here
header("Access-Control-Allow-Origin: *");
$input = $_POST;
//The data you send will now be used
$input['site_id'] = "yoursiteid";
$input['sitekey'] = "yoursitekey";
unset($input['url']);
$output = http_build_query($input);
$url = $_POST['url']."?".$output;
$data = file_get_contents($url);
print_r($data);
?>
那么,谁能告诉我我在哪里错过了这一步。请帮我解决这个问题。我刚才为一个自由客户做的。它通过JS调用PHP脚本,并将其放入图形“googleCharts” 说明: $\u POST将包含形成URL所需的所有数据,siteid和key静态放置在php文件中以确保安全,file_get_contents()从clicky获取数据
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
</script>
<body>
<div id="linechart_material" style="width: 900px; height: 500px"></div>
<button onclick="change('/auction-list/');">Change URL</button>
<div id="map_div" style="width: 900px; height: 500px"></div>
</body>
<script type="text/javascript">
google.charts.load("current", {
packages: ["map", "line"]
});
</script>
<script>
google.charts.setOnLoadCallback(new_req);
var url = "http://localhost/clicky.php";
var item = "/business-development/";
var frequency = "daily";
var date = "last-30-days";
var type = "pages";
function change(myitem){
item = myitem;
new_req();
}
function new_req() {
console.log(item);
var fdata = {
"url": "https://api.clicky.com/api/stats/4",
"type": type,
"date": date,
"output": "json",
"frequency": frequency,
"item": item,
"daily": "1"
};
ajax_request(url, fdata, format_chart_data);
var gdata = {
"url": "https://api.clicky.com/api/stats/4",
"type": "regions",
"date": date,
"output": "json"
};
ajax_request(url, gdata, format_graph_data);
}
function ajax_request(url, data, callback) {
$.ajax({
url: url,
type: 'POST',
data: data,
timeout: 40000,
dataType: 'json',
success: callback,
error: function(XMLHttpRequest, textStatus, errorThrown) {
response = "err--" + XMLHttpRequest.status + " -- " + XMLHttpRequest.statusText;
console.log(response);
}
});
}
function format_chart_data(result) {
console.log(result);
var graph_data = new google.visualization.DataTable();
graph_data.addColumn('string', 'Date');
graph_data.addColumn('number', 'Visitors');
graph_data.addColumn('number', 'Blank');
var data = result[0].dates;
var i = 0;
var j = data.length;
console.log(data.reverse());
for (var i in data) {
var date = data[i].date.split("-");
var year = date[0];
var month = date[1];
var day = date[2];
graph_data.addRow([(day + " / " + month + " / " + year), parseInt(data[i].items[0].value), 0]);
}
var chart1_options = {
title: "Stats",
vAxis: {
title: "Listing",
titleTextStyle: {
color: 'red'
}
}
};
var chart = new google.charts.Line(document.getElementById('linechart_material'));
chart.draw(graph_data, chart1_options);
}
function format_graph_data(result) {
//console.log(JSON.stringify(result));
var map_data = new google.visualization.DataTable();
map_data.addColumn('string', 'Regions');
map_data.addColumn('string', 'Name [Percentage]');
var drt = result[0].dates[0].date.split(",");
var date_range = "From " + drt[0] + " To " + drt[1];
console.log(date_range);
var data = result[0].dates[0].items;
for (var i in data) {
map_data.addRow([data[i].title, data[i].title+" ["+data[i].value_percent+"%]"]);
}
var chart2_options = {
showTip: true
};
var Map = new google.visualization.Map(document.getElementById('map_div'));
Map.draw(map_data, chart2_options);
setTimeout(function() {
// new_req("default");
}, 40000);
}
</script>
这是main.html文件
更改URL
google.charts.load(“当前”{
包装:[“地图”、“线条”]
});
google.charts.setOnLoadCallback(new_-req);
变量url=”http://localhost/clicky.php";
var item=“/business development/”;
var frequency=“每日”;
var date=“最近30天”;
var type=“pages”;
功能更改(myitem){
项目=我的项目;
new_req();
}
函数new_req(){
控制台日志(项目);
变量fdata={
“url”:”https://api.clicky.com/api/stats/4",
“类型”:类型,
“日期”:日期,
“输出”:“json”,
“频率”:频率,
“项目”:项目,
“每日”:“1”
};
ajax请求(url、fdata、格式图表数据);
var gdata={
“url”:”https://api.clicky.com/api/stats/4",
“类型”:“区域”,
“日期”:日期,
“输出”:“json”
};
ajax请求(url、gdata、格式图数据);
}
函数ajax_请求(url、数据、回调){
$.ajax({
url:url,
键入:“POST”,
数据:数据,
超时:40000,
数据类型:“json”,
成功:回调,
错误:函数(XMLHttpRequest、textStatus、errorshown){
response=“err--”+XMLHttpRequest.status+“--”+XMLHttpRequest.statusText;
控制台日志(响应);
}
});
}
函数格式\图表\数据(结果){
控制台日志(结果);
var graph_data=new google.visualization.DataTable();
graph_data.addColumn('string','Date');
图_data.addColumn('number','Visitors');
图_data.addColumn('number','Blank');
var数据=结果[0]。日期;
var i=0;
var j=数据长度;
console.log(data.reverse());
用于(数据中的var i){
var date=数据[i].date.split(“-”);
var年=日期[0];
var月=日期[1];
var日=日期[2];
graph_data.addRow([(天+“/”+月+“/”+年),parseInt(数据[i]。项[0]。值),0]);
}
变量图表1\u选项={
标题:“统计数据”,
言辞:{
标题:“上市”,
titleTextStyle:{
颜色:“红色”
}
}
};
var chart=new google.charts.Line(document.getElementById('linechart_material');
图表绘制(图表数据、图表1选项);
}
函数格式\图形\数据(结果){
//log(JSON.stringify(result));
var map_data=new google.visualization.DataTable();
map_data.addColumn('string','Regions');
map_data.addColumn('string','Name[Percentage]');
var drt=result[0]。日期[0]。日期。拆分(“,”;
var date_range=“从”+drt[0]+“到”+drt[1];
console.log(日期范围);
变量数据=结果[0]。日期[0]。项目;
用于(数据中的var i){
map_data.addRow([data[i]。标题,数据[i]。标题+“[”+数据[i]。值_百分比+“%]”);
}
变量图表2_选项={
小贴士:没错
};
var Map=new google.visualization.Map(document.getElementById('Map_div');
绘图(地图数据、图表2选项);
setTimeout(函数(){
//新要求(“默认”);
}, 40000);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
</script>
<body>
<div id="linechart_material" style="width: 900px; height: 500px"></div>
<button onclick="change('/auction-list/');">Change URL</button>
<div id="map_div" style="width: 900px; height: 500px"></div>
</body>
<script type="text/javascript">
google.charts.load("current", {
packages: ["map", "line"]
});
</script>
<script>
google.charts.setOnLoadCallback(new_req);
var url = "http://localhost/clicky.php";
var item = "/business-development/";
var frequency = "daily";
var date = "last-30-days";
var type = "pages";
function change(myitem){
item = myitem;
new_req();
}
function new_req() {
console.log(item);
var fdata = {
"url": "https://api.clicky.com/api/stats/4",
"type": type,
"date": date,
"output": "json",
"frequency": frequency,
"item": item,
"daily": "1"
};
ajax_request(url, fdata, format_chart_data);
var gdata = {
"url": "https://api.clicky.com/api/stats/4",
"type": "regions",
"date": date,
"output": "json"
};
ajax_request(url, gdata, format_graph_data);
}
function ajax_request(url, data, callback) {
$.ajax({
url: url,
type: 'POST',
data: data,
timeout: 40000,
dataType: 'json',
success: callback,
error: function(XMLHttpRequest, textStatus, errorThrown) {
response = "err--" + XMLHttpRequest.status + " -- " + XMLHttpRequest.statusText;
console.log(response);
}
});
}
function format_chart_data(result) {
console.log(result);
var graph_data = new google.visualization.DataTable();
graph_data.addColumn('string', 'Date');
graph_data.addColumn('number', 'Visitors');
graph_data.addColumn('number', 'Blank');
var data = result[0].dates;
var i = 0;
var j = data.length;
console.log(data.reverse());
for (var i in data) {
var date = data[i].date.split("-");
var year = date[0];
var month = date[1];
var day = date[2];
graph_data.addRow([(day + " / " + month + " / " + year), parseInt(data[i].items[0].value), 0]);
}
var chart1_options = {
title: "Stats",
vAxis: {
title: "Listing",
titleTextStyle: {
color: 'red'
}
}
};
var chart = new google.charts.Line(document.getElementById('linechart_material'));
chart.draw(graph_data, chart1_options);
}
function format_graph_data(result) {
//console.log(JSON.stringify(result));
var map_data = new google.visualization.DataTable();
map_data.addColumn('string', 'Regions');
map_data.addColumn('string', 'Name [Percentage]');
var drt = result[0].dates[0].date.split(",");
var date_range = "From " + drt[0] + " To " + drt[1];
console.log(date_range);
var data = result[0].dates[0].items;
for (var i in data) {
map_data.addRow([data[i].title, data[i].title+" ["+data[i].value_percent+"%]"]);
}
var chart2_options = {
showTip: true
};
var Map = new google.visualization.Map(document.getElementById('map_div'));
Map.draw(map_data, chart2_options);
setTimeout(function() {
// new_req("default");
}, 40000);
}
</script>