PHP示例代码,可直接复制使用



<?php
/*
PHP调用API示例,星号变量替换成自己的key和id就可直接使用

说明:
1、本代码只展示了GET获取,API是同时支持GET或POST调用的;
2、仅当返回结果中的status=='1'时,才会进行积分扣减;
3、接口的返回值均为utf-8编码;

模块编码:utf-8 无bom
*/


### 1、参数设置
# ★授权参数
//用户key; 每个用户有唯的一key,用于生成验证用的签名,不会参与查询传输 (仅在积分充足时才能获取)
$key="b714154cc63ffb13151164d7073e55b8";
//用户id; 在后台获得(仅在积分充足时才能获取); 仅参与传输的参数才放入到$config数组中
$config['id']="2";

# 查询参数
//需查询的功能标识
$config['func']="baidu_qz_ai";
//查询网址,只支持域名,不支持IP查询 (可输入任意网址,API接口会自动识别并提取需要的部分)
$config['site']="www.baidu.com";

# API接口地址
$gateway="http://api.link114.cn/get.php";




### 2、 查询签名sign生成
//提取出被查询网址的域名,仅用于生成加密签名,防止原始key被盗用
$domain=get_domain($config['site']);
if ($domain) {
	$config['sign']=create_sign($config['id'],$key,$domain);
}
else {
	exit('site error!');
}





### 3、获取API数据
//组成最终的get采集网址
$url="{$gateway}?".http_build_query($config);

//curl采集
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);	//设置为30秒超时
curl_setopt($ch, CURLOPT_HEADER, 0);   
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$content=curl_exec($ch);	//获取API数据
curl_close($ch);

//可以不用上面的curl,而用简单粗暴的file_get_contents()内置函数进行获取
//$content=file_get_contents($url);





### 4、结果处理
//API接口有响应
if ( check_content($content)===true ) {
	/*
	1、用户可根据实际需要,对返回结果进行按需处理;
	2、返回结果是一个二维数组;
	3、仅status=='1'时,才会有result元素;
	*/
	
	//转成数组
	$final_array=json_decode($content,true);
	
	/*
	* 至此,已经成功获得数据;
	* 用户根据实际情况修改下面代码;
	*/
	//仅status=='1'时,才算获得了想要的数据;
	if ($final_array['status']=='1') {
		//用户自行处理获到的数据
		echo 'result from api:
'; var_dump($final_array); } //其他status状态,请参考API文档说明 else { } } //API接口没有响应 else { echo 'API connect fail.'; } /********************** 自定义函数区 *********************/ /* API的签名生成 说明: 1、规则:md5(id:key:域名) 传入: $id 客户id号 $key API的key字符串 $domain 被查询网址提取的域名 返回 md5 32位字符串 */ function create_sign ($id,$key,$domain) { return md5("{$id}:{$key}:{$domain}"); } /* 提取被查询网址的域名 说明: 1、提取的域名只用于生成加密用的签名sign,没有其他用途 2、提取后的域名不带http:// 3、不支持ip形式 传入:被查询的网址 返回:域名字符串 */ function get_domain ($site) { $domain=''; if ( preg_match('!^(?:http://|https://)?((?:[a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,16})(?:$|\W)!', $site, $temp) ) { $domain=$temp[1]; } //返回提取的域名 return $domain; } /* 初步检测API是否有响应 说明: 1、API返回的结果一定是json 2、用正则检测是否为json格式 传入:结果字符串 返回:true or false */ function check_content($content) { //只要符合json格式,就当作结果是符合要求的返回结果; $content_reg='/^\{"status":"?-?[1-9]"?.*\}$/i'; if ( preg_match($content_reg,$content) ) { return true; } //结果不符合格式,也当失败处理 else { return false; } } ?>