Go语言调用手机号码查询接口示例:
package main
import (
"encoding/json"
"encoding/xml"
"fmt"
"io/ioutil"
"net/http"
)
const (
URL = "https://api.ip138.com/mobile/"
TOKEN = "bd4c2bf9a38ab06f7cae88c9759ee172"
)
//----------------------------------
// 手机号查询接口调用示例代码
//----------------------------------
// xml struct
type xmlinfo struct {
Ret string `xml:"ret"`
Mobile string `xml:"mobile"`
Data locationxmlInfo `xml:"data"`
}
type locationxmlInfo struct {
Province string `xml:"province"`
City string `xml:"city"`
Card string `xml:"card"`
Zone string `xml:"zone"`
}
//json struct
type jsoninfo struct {
Ret string `json:"ret"`
Mobile string `json:"mobile"`
Data [4] string `json:"data"`
}
func main() {
mobileLocation("13600130000","xml")
}
func mobileLocation(mobile string,dataType string) {
queryUrl := fmt.Sprintf("%s?mobile=%s&datatype=%s",URL,mobile,dataType)
client := &http.Client{}
reqest, err := http.NewRequest("GET",queryUrl,nil)
if err != nil {
fmt.Println("Fatal error ",err.Error())
}
reqest.Header.Add("token",TOKEN)
response, err := client.Do(reqest)
defer response.Body.Close()
if err != nil {
fmt.Println("Fatal error ",err.Error())
}
if response.StatusCode == 200 {
bodyByte, _ := ioutil.ReadAll(response.Body)
if dataType == "jsonp" {
var info jsoninfo
json.Unmarshal(bodyByte,&info)
fmt.Println(info.Mobile)
} else if dataType == "xml" {
var info xmlinfo
xml.Unmarshal(bodyByte,&info)
fmt.Println(info.Mobile)
}
}
return
}