当前位置:文档之家› 基于GO的天气预报接口调用代码实例

基于GO的天气预报接口调用代码实例

基于GO的天气预报接口调用代码实例代码描述:基于GO的天气预报接口调用代码实例代码平台:聚合数据package mainimport("io/ioutil""net/http""net/url""fmt""encoding/json")//----------------------------------// 全国天气预报调用示例代码-聚合数据// 在线接口文档:/docs/39//----------------------------------const APPKEY = "*******************"//您申请的APPKEY func main(){//1.根据城市名/id查询天气Request1()//2.天气种类及标识列表Request2()//3.根据IP查询天气Request3()//4.根据GPS坐标查询天气Request4()//5.城市天气三小时预报Request5()//6.支持城市列表Request6()}//1.根据城市名/id查询天气func Request1(){//请求地址juheURL :="/weather/index"//初始化参数param:=url.Values{}//配置请求参数,方法内部已处理urlencode问题,中文参数可以直接传参param.Set("cityname","") //城市名或城市ID,如:"苏州",需要u tf8 urlencodeparam.Set("dtype","") //返回数据格式:json或xml,默认jsonparam.Set("format","") //未来6天预报(future)两种返回格式,1或2,默认1 param.Set("key",APPKEY) //你申请的key//发送请求data,err:=Get(juheURL,param)if err!=nil{fmt.Errorf("请求失败,错误信息:\r\n%v",err)}else{var netReturn map[string]interface{}json.Unmarshal(data,&netReturn)if netReturn["error_code"].(float64)==0{fmt.Printf("接口返回result字段是:\r\n%v",netReturn["result "])}}}//2.天气种类及标识列表func Request2(){//请求地址juheURL :="/weather/uni"//初始化参数param:=url.Values{}//配置请求参数,方法内部已处理urlencode问题,中文参数可以直接传参param.Set("key",APPKEY) //应用APPKEY(应用详细页查询)param.Set("dtype","") //返回数据的格式,xml或json,默认json//发送请求data,err:=Get(juheURL,param)if err!=nil{fmt.Errorf("请求失败,错误信息:\r\n%v",err)}else{var netReturn map[string]interface{}json.Unmarshal(data,&netReturn)if netReturn["error_code"].(float64)==0{fmt.Printf("接口返回result字段是:\r\n%v",netReturn["result "])}}}//3.根据IP查询天气func Request3(){//请求地址juheURL :="/weather/ip"//初始化参数param:=url.Values{}//配置请求参数,方法内部已处理urlencode问题,中文参数可以直接传参param.Set("ip","") //ip地址,如:58.215.185.154param.Set("dtype","") //返回数据格式:json或xml,默认jsonparam.Set("format","") //未来6天预报(future)两种返回格式,1或2,默认1 param.Set("key",APPKEY) //你申请的key//发送请求data,err:=Get(juheURL,param)if err!=nil{fmt.Errorf("请求失败,错误信息:\r\n%v",err)}else{var netReturn map[string]interface{}json.Unmarshal(data,&netReturn)if netReturn["error_code"].(float64)==0{fmt.Printf("接口返回result字段是:\r\n%v",netReturn["result "])}}}//4.根据GPS坐标查询天气func Request4(){//请求地址juheURL :="/weather/geo"//初始化参数param:=url.Values{}//配置请求参数,方法内部已处理urlencode问题,中文参数可以直接传参param.Set("lon","") //经度,如:116.39277param.Set("lat","") //纬度,如:39.933748param.Set("format","") //未来6天预报(future)两种返回格式,1或2,默认1 param.Set("dtype","") //返回数据格式:json或xml,默认jsonparam.Set("key",APPKEY) //你申请的key//发送请求data,err:=Get(juheURL,param)if err!=nil{fmt.Errorf("请求失败,错误信息:\r\n%v",err)}else{var netReturn map[string]interface{}json.Unmarshal(data,&netReturn)if netReturn["error_code"].(float64)==0{fmt.Printf("接口返回result字段是:\r\n%v",netReturn["result "])}}}//5.城市天气三小时预报func Request5(){//请求地址juheURL :="/weather/forecast3h"//初始化参数param:=url.Values{}//配置请求参数,方法内部已处理urlencode问题,中文参数可以直接传参param.Set("cityname","") //城市名,如:"苏州"param.Set("dtype","") //返回数据格式:json或xml,默认jsonparam.Set("key",APPKEY) //你申请的key//发送请求data,err:=Get(juheURL,param)if err!=nil{fmt.Errorf("请求失败,错误信息:\r\n%v",err)}else{var netReturn map[string]interface{}json.Unmarshal(data,&netReturn)if netReturn["error_code"].(float64)==0{fmt.Printf("接口返回result字段是:\r\n%v",netReturn["result "])}}}//6.支持城市列表func Request6(){//请求地址juheURL :="/weather/citys"//初始化参数param:=url.Values{}//配置请求参数,方法内部已处理urlencode问题,中文参数可以直接传参param.Set("dtype","") //返回数据格式:json或xml,默认jsonparam.Set("key",APPKEY) //你申请的key//发送请求data,err:=Get(juheURL,param)if err!=nil{fmt.Errorf("请求失败,错误信息:\r\n%v",err)}else{var netReturn map[string]interface{}json.Unmarshal(data,&netReturn)if netReturn["error_code"].(float64)==0{fmt.Printf("接口返回result字段是:\r\n%v",netReturn["result "])}}}// get 网络请求func Get(apiURL string,params url.Values)(rs[]byte,err error){var Url *url.URLUrl,err=url.Parse(apiURL)if err!=nil{fmt.Printf("解析url错误:\r\n%v",err)return nil,err}//如果参数中有中文参数,这个方法会进行URLEncodeUrl.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)}// post 网络请求 ,params 是url.Values类型func Post(apiURL string, params url.Values)(rs[]byte,err error){ resp,err:=http.PostForm(apiURL, params)if err!=nil{return nil ,err}defer resp.Body.Close()return ioutil.ReadAll(resp.Body)}。

相关主题