- package main
- import (
- "io/ioutil"
- "net/http"
- "net/url"
- "fmt"
- "encoding/json"
- )
- //----------------------------------
- // 苏州实时公交/地铁调用示例代码 - 聚合数据
- // 在线接口文档:http://www.juhe.cn/docs/31
- //----------------------------------
- const APPKEY = "*******************" //您申请的APPKEY
- func main(){
- //1.站台(编码)查询
- Request1()
- //2.根据站台查询公交状态
- Request2()
- //3.线路(编码)查询
- Request3()
- //4.根据线路编码查询详细信息
- Request4()
- //5.公交(路线)详情
- Request5()
- //6.地铁始发站时刻
- Request6()
- //7.地铁线路实时详细信息
- Request7()
- //8.地铁站台列车到站时刻表
- Request8()
- }
- //1.站台(编码)查询
- func Request1(){
- //请求地址
- juheURL :="http://apis.juhe.cn/szbusline/bus"
- //初始化参数
- param:=url.Values{}
- //配置请求参数,方法内部已处理urlencode问题,中文参数可以直接传参
- param.Set("station","") //需要查询的站台,如:纳米
- param.Set("dtype","") //返回数据格式:json或xml,默认json
- 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 :="http://apis.juhe.cn/szbusline/bus"
- //初始化参数
- param:=url.Values{}
- //配置请求参数,方法内部已处理urlencode问题,中文参数可以直接传参
- param.Set("stationCode","") //站台的编码,在查询站台时有返回
- param.Set("dtype","") //返回数据格式:json或xml,默认json
- 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"])
- }
- }
- }
- //3.线路(编码)查询
- func Request3(){
- //请求地址
- juheURL :="http://apis.juhe.cn/szbusline/bus"
- //初始化参数
- param:=url.Values{}
- //配置请求参数,方法内部已处理urlencode问题,中文参数可以直接传参
- param.Set("bus","") //线路名称或关键字,如11
- param.Set("dtype","") //返回数据格式:json或xml,默认json
- 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.根据线路编码查询详细信息
- func Request4(){
- //请求地址
- juheURL :="http://apis.juhe.cn/szbusline/bus"
- //初始化参数
- param:=url.Values{}
- //配置请求参数,方法内部已处理urlencode问题,中文参数可以直接传参
- param.Set("busline","") //需要查询的线路编码,在查询线路时有返回
- param.Set("dtype","") //返回数据格式:json或xml,默认json
- 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"])
- }
- }
- }
- //5.公交(路线)详情
- func Request5(){
- //请求地址
- juheURL :="http://apis.juhe.cn/szbusline/info"
- //初始化参数
- param:=url.Values{}
- //配置请求参数,方法内部已处理urlencode问题,中文参数可以直接传参
- param.Set("dtype","") //返回数据格式:json或xml,默认json
- 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"])
- }
- }
- }
- //6.地铁始发站时刻
- func Request6(){
- //请求地址
- juheURL :="http://apis.juhe.cn/szbusline/subwaytime"
- //初始化参数
- param:=url.Values{}
- //配置请求参数,方法内部已处理urlencode问题,中文参数可以直接传参
- param.Set("dtype","") //返回数据格式:json或xml,默认json
- 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"])
- }
- }
- }
- //7.地铁线路实时详细信息
- func Request7(){
- //请求地址
- juheURL :="http://apis.juhe.cn/szbusline/subwayline"
- //初始化参数
- param:=url.Values{}
- //配置请求参数,方法内部已处理urlencode问题,中文参数可以直接传参
- param.Set("dtype","") //返回数据格式:json或xml,默认json
- param.Set("key",APPKEY) //你申请的key
- param.Set("line_id","") //地铁线路编号
- param.Set("lng","") //经度
- param.Set("lat","") //纬度
- param.Set("order","") //线路方向(参考值: 1-正方向,2-反方向,默认为1)
- //发送请求
- 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"])
- }
- }
- }
- //8.地铁站台列车到站时刻表
- func Request8(){
- //请求地址
- juheURL :="http://apis.juhe.cn/szbusline/subwaystation"
- //初始化参数
- param:=url.Values{}
- //配置请求参数,方法内部已处理urlencode问题,中文参数可以直接传参
- param.Set("dtype","") //返回数据格式:json或xml,默认json
- param.Set("key",APPKEY) //你申请的key
- param.Set("line_id","") //地铁线路编号
- param.Set("station_id","") //地铁站台编号
- param.Set("order","") //线路方向(参考值: 1-上行,2-下行,默认为1)
- //发送请求
- 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.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)
- }
- // 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.R
- //该片段来自于http://www.codesnippet.cn/detail/1706201614739.html
来源: http://www.codesnippet.cn/detail/1706201614739.html