package main
import (
"net/url"
"fmt"
"net/http"
"io/ioutil"
"encoding/json"
)
func main() {
apiUrl := "http://apis.juhe.cn/mobile/get"
param := url.Values{}
param.Set("phone", "18912341234")
param.Set("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 {
fmt.Errorf("请求异常:%v", jsonerr)
} else {
errorCode := netReturn["error_code"]
reason := netReturn["reason"]
data := netReturn["result"]
if errorCode.(float64) == 0 {
fmt.Printf("查询结果\n省份:%v\n城市:%v\n区号:%v\n邮编:%v\n运营商:%v\n",
data.(map[string]interface{})["province"],
data.(map[string]interface{})["city"],
data.(map[string]interface{})["areacode"],
data.(map[string]interface{})["zip"],
data.(map[string]interface{})["company"])
} else {
fmt.Printf("查询失败:%v_%v", errorCode.(float64), reason)
}
}
}
}
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
}
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)
}
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)
}