失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > php tp 聚合数据接口 TP5结合聚合数据天气预报API查询天气

php tp 聚合数据接口 TP5结合聚合数据天气预报API查询天气

时间:2019-05-17 21:17:12

相关推荐

php tp 聚合数据接口 TP5结合聚合数据天气预报API查询天气

分享一个php版本的查询天气接口。免费查询天气的接口有很多,比如百度的apistore的天气api接口,我本来想采用这个接口的,可惜今天百度apistore死活打不开了。那就用聚合数据的天气api接口吧,也是免费的,不过聚合数据的接口申请相对繁琐。

1、注册一个聚合数据的账号

2、实名认证你的账号

3、申请你需要的api接口

4、申请验证你的api接口

申请地址:/docs/api/...

虽然是繁琐了很多,不过返回的信息确是非常的丰富。

好了,现在来分享一下,tp5中怎么整合进去。

config.php中,配置你的appkey:

//配置文件

return [

'appkey' => '' //此处填入你的key

];

common.php中放入请求的方法:

/**

* 请求接口返回内容

* @param string $url [请求的URL地址]

* @param string $params [请求的参数]

* @param int $ipost [是否采用POST形式]

* @return string

*/

function juhecurl($url, $params=false, $ispost=0){

$httpInfo = [];

$ch = curl_init();

curl_setopt( $ch, CURLOPT_HTTP_VERSION , CURL_HTTP_VERSION_1_1 );

curl_setopt( $ch, CURLOPT_USERAGENT , 'JuheData' );

curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT , 60 );

curl_setopt( $ch, CURLOPT_TIMEOUT , 60);

curl_setopt( $ch, CURLOPT_RETURNTRANSFER , true );

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

if( $ispost )

{

curl_setopt( $ch , CURLOPT_POST , true );

curl_setopt( $ch , CURLOPT_POSTFIELDS , $params );

curl_setopt( $ch , CURLOPT_URL , $url );

}

else

{

if($params){

curl_setopt( $ch , CURLOPT_URL , $url.'?'.$params );

}else{

curl_setopt( $ch , CURLOPT_URL , $url);

}

}

$response = curl_exec( $ch );

if ($response === FALSE) {

//echo "cURL Error: " . curl_error($ch);

return false;

}

$httpCode = curl_getinfo( $ch , CURLINFO_HTTP_CODE );

$httpInfo = array_merge( $httpInfo , curl_getinfo( $ch ) );

curl_close( $ch );

return $response;

}

控制器中,index.php的代码:

// +----------------------------------------------------------------------

// | 利用聚合数据查询天气

// +----------------------------------------------------------------------

// | Copyright (c) ~ All rights reserved.

// +----------------------------------------------------------------------

// | Licensed ( /licenses/LICENSE-2.0 )

// +----------------------------------------------------------------------

// | Author: NickBai <1902822973@>

// +----------------------------------------------------------------------

namespace app\weather\controller;

use think\Controller;

class Index extends Controller

{

public function index()

{

return $this->fetch();

}

/**

* 根据城市获取天气情况

*/

public function getWeatherByCity()

{

$cityName = input('param.cityname');

$url = "/onebox/weather/query";

$appkey = config('appkey');

$params = [

"cityname" => $cityName,//要查询的城市,如:温州、上海、北京

"key" => $appkey,//应用APPKEY(应用详细页查询)

"dtype" => "",//返回数据的格式,xml或json,默认json

];

$paramstring = http_build_query($params);

$content = juhecurl($url, $paramstring);

$result = json_decode($content, true);

if( empty( $result ) ){

return json( ['code' => -1, 'data' => '', 'msg' => '请求失败'] );

}

if( '0' != $result['error_code'] ){

return json( ['code' => -2, 'data' => '', 'msg' => $result['error_code']." : ".$result['reason']] );

}

return json( ['code' => 1, 'data' => $result, 'msg' => 'success'] );

}

}

view层中,index.html的代码如下:

天气查询

查询

$(function(){

$("#searchBtn").click(function(){

var city = $("#searchbox").val();

if( '' == city ){

layer.alert('城市名称不能为空', { 'icon' : 2 });

return ;

}

var index = layer.load(0, {shade: false}); //0代表加载的风格,支持0-2

$.getJSON( "{:url('weather/index/getWeatherByCity')}", { 'cityname' : city }, function(res){

layer.close( index );

if( 1 == res.code ){

}else{

layer.alert( res.msg , { 'icon' : 2 });

}

});

})

});

通过浏览器访问页面如下:

输入你要查询的城市,比如:南京,点击查询

json数据成功返回,这是你就可以根据你的需要渲染页面了。参数的讲解参照这里

/docs/api/...

如果觉得《php tp 聚合数据接口 TP5结合聚合数据天气预报API查询天气》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。