基于GO的免费天气预报接口查询
短信预约 -IT技能 免费直播动态提醒
1、开通接口
天气预报接口服务使用的聚合数据提供的免费接口,每天可以100次免费调用。可以通过https://www.juhe.cn/docs/api/id/73注册及开通。
2、通过Go发起城市天气查询
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
"net/url"
)
func main() {
// 接口请求URL
apiUrl := "http://apis.juhe.cn/simpleWeather/query"
// 初始化参数
param := url.Values{}
// 接口请求参数
param.Set("city", "北京") // 要查询的城市名称/id,城市名称如:温州、上海、北京
param.Set("key", "您申请的接口调用Key") // 接口请求Key
// 发送请求
data, err := Get(apiUrl, param)
if err != nil {
// 请求异常,根据自身业务逻辑进行调整修改
fmt.Errorf("请求异常:\r\n%v", err)
} else {
var netReturn map[string]interface{}
jsonerr := json.Unmarshal(data, &netReturn)
if jsonerr != nil {
// 解析JSON异常,根据自身业务逻辑进行调整修改
fmt.Errorf("请求异常:%v", jsonerr)
} else {
errorCode := netReturn["error_code"]
reason := netReturn["reason"]
data := netReturn["result"]
// 当前天气信息
realtime := data.(map[string]interface{})["realtime"]
if errorCode.(float64) == 0 {
// 请求成功,根据自身业务逻辑进行调整修改
fmt.Printf("温度:%v\n湿度:%v\n天气:%v\n风向:%v\n风力:%v\n空气质量:%v",
realtime.(map[string]interface{})["temperature"],
realtime.(map[string]interface{})["humidity"],
realtime.(map[string]interface{})["info"],
realtime.(map[string]interface{})["direct"],
realtime.(map[string]interface{})["power"],
realtime.(map[string]interface{})["aqi"],
)
} else {
// 查询失败,根据自身业务逻辑进行调整修改
fmt.Printf("请求失败:%v_%v", errorCode.(float64), reason)
}
}
}
}
// get 方式发起网络请求
func Get(apiURL string, params url.Values) (rs []byte, err error) {
var Url *url.URL
Url, err = url.Parse(apiURL)
if err != nil {
fmt.Printf("解析url错误:\r\n%v", err)
return nil, err
}
//如果参数中有中文参数,这个方法会进行URLEncode
Url.RawQuery = params.Encode()
resp, err := http.Get(Url.String())
if err != nil {
fmt.Println("err:", err)
return nil, err
}
defer resp.Body.Close()
return ioutil.ReadAll(resp.Body)
}
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341