`
jammk
  • 浏览: 42733 次
文章分类
社区版块
存档分类
最新评论

TP5结合聚合数据API查询天气预报

 
阅读更多

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

全国天气预报申请地址:https://www.juhe.cn/docs/api/id/73
1、注册一个聚合数据的账号
2、实名认证你的账号
3、申请你需要的api接口
4、申请验证你的api接口
虽然是繁琐了很多,不过返回的信息确是非常的丰富。
好了,现在来分享一下,tp5中怎么整合进去。

config.php中,配置你的appkey:

//配置文件
return [
    
    'appkey' => ''  //此处填入你的key
];

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

<?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的代码:

<?php
// +----------------------------------------------------------------------
// | 利用聚合数据查询天气
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2022 http://baiyf.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: NickBai <1902822973@qq.com>
// +----------------------------------------------------------------------
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 = "http://op.juhe.cn/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的代码如下:

<!doctype html>
<html>
  
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>天气查询</title>
    <script src="//cdn.bootcss.com/jquery/3.1.1/jquery.min.js" type="text/javascript"></script>
    <script src="/static/layer/layer.js" type="text/javascript"></script>
    <link href="/static/css/style.css" rel="stylesheet" type="text/css">
  <body>
    <!--nav是导航 结束-->
    <div class="search center">
      <input class="text-pc" id="searchbox" name="" type="text" placeholder="请输入城市名称"/>
      <a class="button-pc" id="searchBtn" href="javascript:void(0);">
        <span class="icon-search"></span>
        <span class="search2 am-hide-sm-only">查询</span></a>
    </div>
    
    <div class="check-Result center" style="display:block">
        
    </div>
    
    <script type="text/javascript">
        $(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 });
                    }
                });
            })
        });
    </script>
    
  </body>
</html>

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



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


json数据成功返回,这是你就可以根据你的需要渲染页面了。参数的讲解参照这里
https://www.juhe.cn/docs/api/id/73

 

 

 

 

分享到:
评论

相关推荐

    tp5框架开发的restful API接口自动生成文档源码.zip

    在本文中,我们将深入探讨基于ThinkPHP5(简称TP5)框架开发RESTful API接口以及如何自动生成相关文档。RESTful API设计模式已经成为现代Web服务的主流,它以资源为中心,通过HTTP方法来操作资源,提供了简洁、清晰...

    tp5动态读取mysql数据在echarts显示

    标题中的"tp5动态读取mysql数据在echarts显示"是指使用ThinkPHP5框架与ECharts图表库结合,实现从MySQL数据库中动态获取温湿度、烟雾浓度等时间序列数据,并将其可视化展示为折线图的过程。这个过程涉及到前端与后端...

    基于tp5的restfulapi风格接口oauth20接口版本管理

    本项目“基于tp5的restfulapi风格接口oauth20接口版本管理”旨在利用ThinkPHP5框架实现一个支持OAuth2.0授权协议的RESTful API,提供接口版本管理功能,这在现代Web服务和移动应用开发中至关重要。 首先,让我们...

    tp5之修改返回数据格式

    在本文中,我们将深入探讨ThinkPHP5(简称tp5)框架中的数据返回格式修改,以及如何在实际开发中实现这一功能。ThinkPHP5是一个流行的PHP轻量级框架,以其高效、简洁的代码结构和丰富的功能特性深受开发者喜爱。在...

    tp5-api-master_termjtv_thinkphp5_tp_system-master_

    “tp5-api-master_termjtv_thinkphp5_tp_system-master”项目是基于ThinkPHP5框架开发的后台管理系统,结合了API接口设计和后台管理功能。通过理解ThinkPHP5的核心特性和项目中的关键模块,开发者可以更好地掌握该...

    基于百度接口的天气预报

    通过调用这些接口,我们可以获取到全国各地的天气数据,包括温度、湿度、风向、风力、空气质量等信息。 1. **API调用**:开发者需要注册并获得百度API的密钥(AK/SK),这将用于在请求时验证身份。在代码中,我们将...

    tp6对接招商银行聚合 sm2国密 api

    php版本7.2 打开gmb扩展 使用composer require lpilp/guomi 安装拓展(没有开启gmb扩展会安装失败) 我用的框架是tp6 方式都是通用的

    initadmin-master-tp5api后台模板.rar

    《基于Thinkphp5的tp5api后台模板深度解析》 在现代互联网开发中,API(Application Programming Interface)已经成为数据交互的重要桥梁,特别是在前后端分离的架构模式下,API的高效设计与实现至关重要。...

    ThinkPHP5联合(关联)查询、多条件查询与聚合查询实例详解

    ThinkPHP5是一个广泛使用的PHP开发框架,它提供了多种数据库操作的方法,特别是在数据查询方面提供了非常丰富的API,方便开发者进行联合查询、多条件查询以及聚合查询等操作。 ### 联合(关联)查询 在ThinkPHP5中,...

    tp5调用百度语音api合成播放文字语音

    tp5调用百度语音api合成播放文字语音,本例为播放访问者是多少位访客所写

    tp5 restful api框架

    标题中的“tp5 restful api框架”指的是基于ThinkPHP5框架构建的RESTful API开发方案。RESTful API设计风格是目前Web服务开发中常用的一种方式,它强调资源的表述状态转移,通过HTTP方法(如GET、POST、PUT、DELETE...

    tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作

    tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份...

    tp5Api接口带权限纯净版.zip

    【标题】"tp5Api接口带权限纯净版.zip"是一个基于ThinkPHP5.0框架构建的API接口系统,集成了完整的权限控制、登录认证、角色管理、管理员管理、菜单管理和Token验证功能。这个项目旨在提供一个简洁且实用的API开发...

    TP5结合gatewayworker实现一对一即时来聊天

    标题 "TP5结合gatewayworker实现一对一即时来聊天" 涉及到的技术栈主要是PHP的ThinkPHP5(简称TP5)框架与GatewayWorker库的整合,用于构建一个实时的、一对一的在线聊天应用。这样的应用在当今互联网产品中非常常见...

    TP5开发手册

    - **验证机制**:讨论了数据验证的重要性以及TP5提供的验证工具和方法。 - **安全性**:强调了安全性的重要性,提供了一些安全建议,如输入验证、数据库操作安全等。 - **单元测试**:提供了编写单元测试的方法和...

    PHP tp5中使用原生sql查询代码实例

    注意事项: ... 2.只要是数据库操作必须引用 use/think/Db;严格区分大小写。... /****************tp5中使用原生语句*******************/ //query 用于查询 其他的用execute // 插入记录 // $result = Db::e

    664_tp5后台_thinkphp5后台模板+权限管理_tp5后台饼图_

    【标题】"664_tp5后台_thinkphp5后台模板+权限管理_tp5后台饼图_" 涵盖了几个关键的IT知识点,主要集中在使用ThinkPHP5框架开发的后台管理系统,包括模板设计、权限管理和图表展示。下面将详细阐述这些概念。 1. ...

    TP5+MySQL通用分表代码

    - 产品上线以后,数据量越来越大,当一个表有几十万上百万条记录的时候,是时候考虑分表了。【超过几千万记录的话,这个分表估计不适合。】 - 怎么做 - 分表情况,1:hash分表,按照目标表的id的hash值,写入对应...

    tp5整合讯飞文字转语音

    标题中的“tp5整合讯飞文字转语音”指的是在基于ThinkPHP5(简称TP5)的Web应用中集成科大讯飞的文字转语音(Text-to-Speech,TTS)服务。ThinkPHP5是一个流行的PHP框架,它提供了快速、稳定且灵活的开发环境,而...

    tp5框架完整版

    《TP5框架完整版:深度解析与应用指南》 TP5(ThinkPHP 5)是基于PHP语言的轻量级、高效能的开源Web开发框架,以其简洁的代码结构、强大的功能特性、易于上手的特性深受开发者喜爱。本指南将深入探讨TP5框架的核心...

Global site tag (gtag.js) - Google Analytics