修复好友获取不全的问题 (#118)
This commit is contained in:
parent
03aa3c1633
commit
efdac13d91
37
caller.go
37
caller.go
@ -155,19 +155,32 @@ func (c *Caller) SyncCheck(request *BaseRequest, info *LoginInfo, response *WebI
|
|||||||
|
|
||||||
// WebWxGetContact 获取所有的联系人
|
// WebWxGetContact 获取所有的联系人
|
||||||
func (c *Caller) WebWxGetContact(info *LoginInfo) (Members, error) {
|
func (c *Caller) WebWxGetContact(info *LoginInfo) (Members, error) {
|
||||||
resp, err := c.Client.WebWxGetContact(info)
|
var members Members
|
||||||
if err != nil {
|
var reqs int64
|
||||||
return nil, err
|
for {
|
||||||
|
resp, err := c.Client.WebWxGetContact(info, reqs)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
var item WebWxContactResponse
|
||||||
|
if err = scanJson(resp.Body, &item); err != nil {
|
||||||
|
_ = resp.Body.Close()
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if err = resp.Body.Close(); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if !item.BaseResponse.Ok() {
|
||||||
|
return nil, item.BaseResponse.Err()
|
||||||
|
}
|
||||||
|
members = append(members, item.MemberList...)
|
||||||
|
|
||||||
|
if item.Seq == 0 || item.Seq == reqs {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
reqs = item.Seq
|
||||||
}
|
}
|
||||||
defer func() { _ = resp.Body.Close() }()
|
return members, nil
|
||||||
var item WebWxContactResponse
|
|
||||||
if err := scanJson(resp.Body, &item); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
if !item.BaseResponse.Ok() {
|
|
||||||
return nil, item.BaseResponse.Err()
|
|
||||||
}
|
|
||||||
return item.MemberList, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// WebWxBatchGetContact 获取联系人的详情
|
// WebWxBatchGetContact 获取联系人的详情
|
||||||
|
@ -214,12 +214,12 @@ func (c *Client) SyncCheck(request *BaseRequest, info *LoginInfo, response *WebI
|
|||||||
}
|
}
|
||||||
|
|
||||||
// WebWxGetContact 获取联系人信息
|
// WebWxGetContact 获取联系人信息
|
||||||
func (c *Client) WebWxGetContact(info *LoginInfo) (*http.Response, error) {
|
func (c *Client) WebWxGetContact(info *LoginInfo, reqs int64) (*http.Response, error) {
|
||||||
path, _ := url.Parse(c.Domain.BaseHost() + webwxgetcontact)
|
path, _ := url.Parse(c.Domain.BaseHost() + webwxgetcontact)
|
||||||
params := url.Values{}
|
params := url.Values{}
|
||||||
params.Add("r", strconv.FormatInt(time.Now().UnixNano()/1e6, 10))
|
params.Add("r", strconv.FormatInt(time.Now().UnixNano()/1e6, 10))
|
||||||
params.Add("skey", info.SKey)
|
params.Add("skey", info.SKey)
|
||||||
params.Add("req", "0")
|
params.Add("seq", strconv.FormatInt(reqs, 10))
|
||||||
path.RawQuery = params.Encode()
|
path.RawQuery = params.Encode()
|
||||||
req, _ := http.NewRequest(http.MethodGet, path.String(), nil)
|
req, _ := http.NewRequest(http.MethodGet, path.String(), nil)
|
||||||
return c.Do(req)
|
return c.Do(req)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user