前言
之前学了Go语言网络编程,包括HTTP编程、Socket编程,现在我们使用Go实现蓝鲸API接口调用。
总所周知,Python的requests、urllib2都是http请求、爬虫的利器,那么Go语言该怎样做?
话不多说,直接上示例代码。
示例代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
| import ( "bytes" "encoding/json" "fmt" "io/ioutil" "net/http" )
type BkResp struct { Code int `json:"code"` Permission string `json:"permission"` Result bool `json:"result"` RequestId string `json:"request_id"` Message string `json:"message"` Data map[string]interface{} `json:"data"` }
func main() { client := http.Client{} url := "http://paas.zw.com/api/c/compapi/v2/cc/search_business/" m1 := make(map[string]string) m1["bk_app_code"] = "bk_monitor" m1["bk_app_secret"] = "7c919c6c-3e07-42b3-b8ea-cc56b6a367d0" m1["bk_username"] = "admin" params, err1 := json.Marshal(m1) if err1 != nil { fmt.Println(err1.Error()) return } req_data := bytes.NewReader(params) request, err2 := http.NewRequest("POST", url, req_data) if err2 != nil { fmt.Println(err2.Error()) return } request.Header.Set("Content-Type", "application/json;charset=UTF-8") resp, err3 := client.Do(request) if err3 != nil { fmt.Println(err3.Error()) return } respBytes, err4 := ioutil.ReadAll(resp.Body) if err4 != nil { fmt.Println(err4.Error()) return } var resp_data BkResp err5 := json.Unmarshal([]byte(string(respBytes)), &resp_data) if err5 != nil { fmt.Println(err5.Error()) return } bk_info_list := resp_data.Data["info"] for _, v := range bk_info_list.([]interface{}) { fmt.Println(v) } }
|