Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php curl的clicky api连接失败_Php_Curl - Fatal编程技术网

使用php curl的clicky api连接失败

使用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,用于连接“Clicky API”,如“”,为此我开发了一个cUrl代码,如下所示

$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>