package main import ( "bytes" "encoding/json" "fmt" "io/ioutil" "log" "net/http" ) type materialQuery struct { Type string `json:"type"` Offiset int `json:"offset"` Count int `json:"count"` } type materialCount struct { VoiceCount int64 `json:"voice_count"` VideoCount int64 `json:"video_count"` ImageCount int64 `json:"image_count"` NewsCount int64 `json:"news_count"` } func getNewList() (jstr string) { jstr = getMediaList("news") return } func getMediaList(mediaType string) (jstr string) { var q = materialQuery{mediaType, 0, 20} jsonStr, _ := json.Marshal(q) u := url4MaterialList() req, err := http.NewRequest("POST", u, bytes.NewBuffer(jsonStr)) log.Println(u) if err != nil { return "" } client := &http.Client{} r, err := client.Do(req) if err != nil { return "" } defer r.Body.Close() b, _ := ioutil.ReadAll(r.Body) jstr = string(b) return } func url4MaterialList() string { atk, _ := GetAccessToken() u := fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=%s", atk) return u } func url4MaterialCount() string { atk, _ := GetAccessToken() u := fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/material/get_materialcount?access_token=%s", atk) return u } func getMaterialCount() (materialCount, error) { mc := materialCount{} url := url4MaterialCount() r, err := http.Get(url) if err != nil { return mc, err } defer r.Body.Close() b, _ := ioutil.ReadAll(r.Body) err = json.Unmarshal(b, &mc) return mc, nil }