java微信获取用户列表示例

2017年09月19日 09:40 | 1452次浏览 作者原创 版权保护

公众号可通过本接口来获取帐号的关注者列表,关注者列表由一串OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的)组成。一次拉取调用最多拉取10000个关注者的OpenID,可以通过多次拉取的方式来满足需求。

接口调用请求说明

http请求方式: GET(请使用https协议)
https://api.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&next_openid=NEXT_OPENID

next_openid 第一个拉取的OPENID,不填默认从头开始拉取

返回说明

正确时返回JSON数据包:

{"total":2,"count":2,"data":{"openid":["","OPENID1","OPENID2"]},"next_openid":"NEXT_OPENID"}

参数说明:

total     关注该公众账号的总用户数

count      拉取的OPENID个数,最大值为10000

data      列表数据,OPENID的列表

next_openid 拉取列表的最后一个用户的OPENID

错误时返回JSON数据包(示例为无效AppID错误):

{"errcode":40013,"errmsg":"invalid appid"}

附:关注者数量超过10000时

当公众号关注者数量超过10000时,可通过填写next_openid的值,从而多次拉取列表的方式来满足需求。

具体而言,就是在调用接口时,将上一次调用得到的返回中的next_openid值,作为下一次调用中的next_openid值。

java代码示例

1,获取access_token

//1,获取acess_token
		String appid="";//应用ID
		String appSecret="";//(应用密钥)
        String url ="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appid+"&secret="+appSecret+"";
	    String backData=TestAcessToken.sendGet(url, "utf-8", 10000);
	    System.out.println("返回:"+backData);
	    JSONObject jsonObject = JSONObject.fromObject(backData);
	    String access_token=jsonObject .getString("access_token");

appid和appSecret替换为自己公众号申请的即可。

sendGet方法

/***V型知识库 www.vxzsk.com
	 * 模拟get请求
	 * @param url
	 * @param charset
	 * @param timeout
	 * @return
	 */
	 public static String sendGet(String url, String charset, int timeout)
	  {
	    String result = "";
	    try
	    {
	      URL u = new URL(url);
	      try
	      {
	        URLConnection conn = u.openConnection();
	        conn.connect();
	        conn.setConnectTimeout(timeout);
	        BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), charset));
	        String line="";
	        while ((line = in.readLine()) != null)
	        {
	        
	          result = result + line;
	        }
	        in.close();
	      } catch (IOException e) {
	        return result;
	      }
	    }
	    catch (MalformedURLException e)
	    {
	      return result;
	    }
	  
	    return result;
	  }

2,获取关注用户列表,在这里参数next_openid设置为空。

//2,获取关注用户 V型知识库 www.vxzsk.com
	    String getUrl="https://api.weixin.qq.com/cgi-bin/user/get?access_token="+access_token+"&next_openid=";
	    String jsonData=TestAcessToken.sendGet(getUrl, "utf-8", 10000);
	    System.out.println(jsonData);

access_token和sendGet方法代码都已在第一步晒出。

3,完整代码如下

package com.test.weixin;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import net.sf.json.JSONObject;
/****
 * 
 * @author V型知识库 www.vxzsk.com
 *
 */
public class TestUser {
	/***
	 * 模拟get请求
	 * @param url
	 * @param charset
	 * @param timeout
	 * @return
	 */
	 public static String sendGet(String url, String charset, int timeout)
	  {
	    String result = "";
	    try
	    {
	      URL u = new URL(url);
	      try
	      {
	        URLConnection conn = u.openConnection();
	        conn.connect();
	        conn.setConnectTimeout(timeout);
	        BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), charset));
	        String line="";
	        while ((line = in.readLine()) != null)
	        {
	        
	          result = result + line;
	        }
	        in.close();
	      } catch (IOException e) {
	        return result;
	      }
	    }
	    catch (MalformedURLException e)
	    {
	      return result;
	    }
	  
	    return result;
	  }
	public static void main(String[] args) {
		//1,获取acess_token
		String appid="";//应用ID
		String appSecret="";//(应用密钥)
        String url ="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appid+"&secret="+appSecret+"";
	    String backData=TestUser.sendGet(url, "utf-8", 10000);
	    System.out.println("返回:"+backData);
	    JSONObject jsonObject = JSONObject.fromObject(backData);
	    String access_token=jsonObject .getString("access_token");
	    //2,获取关注用户
	    String getUrl="https://api.weixin.qq.com/cgi-bin/user/get?access_token="+access_token+"&next_openid=";
	    String jsonData=TestUser.sendGet(getUrl, "utf-8", 10000);
	    System.out.println(jsonData);
	}

}

把上述代码复制工程里面 在main方法里设置好自己的appid和appserect 直接运行即可,在这里还需要依赖json.jar包,请读者自行下载。

4,效果如下

此文章本站原创,地址 https://www.vxzsk.com/198.html   转载请注明出处!谢谢!

感觉本站内容不错,读后有收获?小额赞助,鼓励网站分享出更好的教程