由于公众号换了公司主体,需要做迁移,玩家的openId数据需要做处理。

(我是按我要的json格式,将粉丝导成了1万条数据的一个json文件)

文件格式:

{
"info":[
{"openId":"ogVous494ltuNmO4zHb1seHeGLSk"}
]
}
package exportFansFromPublic;

import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.odao.weixin.api.support.AccessTokenKit;
import com.odao.weixin.api.support.HttpKit; /**
* 导出公众号粉丝
* @author wangfj
*/
public class ExportFansFromPublic {
@SuppressWarnings({ "unchecked", "static-access","rawtypes"})
public static void main(String[] args) throws Exception {
String token = AccessTokenKit.getTokenNew("appId", "app秘钥");
String accesstoken = (String) ((Map) JSON.parseObject(token, Map.class)).get("access_token");
Map<String,String> params = new HashMap<String,String>();
params.put("access_token", accesstoken);
String nextOpenId = "";
for(int i=1;i<=50;i++){ //我这了定的50,是根据公众号粉丝数量来的,一个文件一万条,你们自己算
if(!"".equals(nextOpenId)){
params.put("next_openid", nextOpenId);
}
//根据appId,appSecret获取数据粉丝openId(1次1万条)
//格式:{"data":{"openid":["oneOpenId,twoOpenId"]},"next_openid":"theNextOpenId"}
try{
String data = HttpKit.get("https://api.weixin.qq.com/cgi-bin/user/get",params);
JSONObject json = (JSONObject) JSONObject.parse(data);
String openId = json.get("data").toString(); JSONObject open = (JSONObject) JSONObject.parse(openId);
String openIds = open.get("openid").toString();
JSONArray arr= JSONObject.parseArray(openIds); List<String> list = arr.toJavaObject(arr, List.class); nextOpenId = writerJson(list,i);
}catch(Exception e){
System.out.println("导出完毕");
break;
}
}
} public static String writerJson(List<String> list,int fileName){
String nextOpenId = "";
FileWriter fw = null;
PrintWriter out = null;
try {
// 指定生成txt的文件路径
fw = new FileWriter("C:/Users/admin/Desktop/fan/"+fileName+".json");
out = new PrintWriter(fw);
out.println("{");
out.println("\t\"info\":[");
for(int i=0;i<list.size();i++){
if(i!=list.size()-1){
out.println("\t\t{\"openId\":\""+list.get(i)+"\"},");
}else{
nextOpenId = list.get(i);
out.println("\t\t{\"openId\":\""+list.get(i)+"\"}");
}
}
out.println("\t]");
out.println("}");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
out.close();
fw.close();
out.flush(); // 由于此处用到了缓冲流,如果数据量过大,不进行flush操作,某些数据将依旧 存在于内从中而不会写入文件,此问题一定要注意
} catch (Exception e) {
e.printStackTrace();
}
}
return nextOpenId;
}
}

Java 微信公众号导出所有粉丝(openId)的更多相关文章

  1. Java微信公众号安全模式消息解密

    这篇文章主要为大家详细介绍了Java微信公众号安全模式消息解密,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 1.微信公众平台下载解密工具,导入项目中,根据demo解密消息 public stat ...

  2. Java微信公众号开发梳理

    Java微信公众号开发梳理 现在微信公众平台的开发已经越来越普遍,这次开发需要用到微信公众平台.因此做一个简单的记录,也算是给那些没踩过坑的童鞋一些启示吧.我将分几块来简单的描述一下,之后会做详细的说 ...

  3. ASP.NET微信公众号用于给指定OpenId用户发送红包

    ASP.NET微信公众号用于给指定OpenId用户发送红包 微信公众号要实现对指定用户发送红包,必须指定一个存放兵发放金额的商户号,在微信商户平台里面申请商户号并获取相关参数例如发送红包所要用到的安全 ...

  4. Java 微信公众号上传永久素材的方法

    Java 微信公众号上传永久素材的方法 学习了:http://blog.csdn.net/u013791374/article/details/53258275 膜拜一下,源码如下: @Request ...

  5. JAVA微信公众号通过openid发送模板消息~

    1,问题产生 在微信公众号开发过程中,我们有时候做不同权限的时候,比如在注册的时候,需要审核,然后我们要想办法让对方知道审核的结果.这时候我们可以通过模板消息来通知. 2,第一步,首先在微信公众号上获 ...

  6. JAVA微信公众号网页开发 —— 用户授权获取openid

    官方文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842 HttpClientUtil.java packa ...

  7. JAVA微信公众号网页开发——获取公众号关注的所有用户(微信公众号粉丝)

    package com.weixin.sendmessage; import org.apache.commons.lang.StringUtils; import org.apache.http.H ...

  8. Java 微信公众号迁移

    背景:公众号换主体,要迁移,粉丝(openId)的业务数据要做处理. 第一步:参照我的另一篇文章,Java 导出微信公众号粉丝. 第二部:数据处理(master-worker模式) 程序主入口:Mai ...

  9. java微信公众号JSAPI支付以及所遇到的坑

    上周做了个支付宝微信扫码支付,今天总结一下.微信相比支付宝要麻烦许多 由于涉及到代理商,没办法,让我写个详细的申请流程,懵逼啊. 笔记地址 http://note.youdao.com/notesha ...

随机推荐

  1. UOJ274 [清华集训2016] 温暖会指引我们前行 【LCT】【最大生成树】

    题目分析: 差评,最大生成树裸题.hack数据还卡常. 代码: #include<bits/stdc++.h> using namespace std; ; struct LCT{ ],d ...

  2. CH2601 电路维修(算竞进阶习题)

    01边bfs 这题很容易想到的就是根据符号的情况建图,把每个点方格的对角线看成图的节点,有线相连就是边权就是0,没有就是1 然后跑最短路,但是最短路用的优先队列维护是有logn的代价的 这题还有一个更 ...

  3. Ionic3新页面去除Tabs的菜单问题总结

    问题 要求在[我的]页面,点击[退出登录]按钮,返回到登录页面. 使用 this.navCtrl.setRoot(LoginPage); 或者 this.navCtrl.push(LoginPage) ...

  4. pax3 quick start guide

    pax3 quick start guide 外观图: 配置:1 * pax3 主机:2 * 吸嘴(一个平的,一个凸的):2 * 底盖(一个烟草的,一个烟膏的):3 * 过滤片:1 * USB充:1 ...

  5. MT【312】特征根法求数列通项

    (2016清华自招领军计划37题改编) 设数列$\{a_n\}$满足$a_1=5,a_2=13,a_{n+2}=\dfrac{a^2_{n+1}+6^n}{a_n}$则下面不正确的是(      )A ...

  6. Swarm stack

    什么是 stack ?例如:首先创建 secret. 然后创建 MySQL service,这是 WordPress 依赖的服务. 最后创建 WordPress service. 也就是说,这个应用包 ...

  7. luogu5020 [NOIp2018]货币系统 (完全背包)

    我那个新的货币系统,就是把原来的货币系统中能被其他数表示的数删掉 那我就算有多少数能被别的数表示,那肯定是要被比它小的表示 于是排个序做完全背包就好了 但是我太zz不会完全背包,然后写了个bitset ...

  8. [SCOI2016]萌萌哒(倍增+并查集)

    一个长度为n的大数,用S1S2S3...Sn表示,其中Si表示数的第i位,S1是数的最高位,告诉你一些限制条件,每个条件表示为四个数,l1,r1,l2,r2,即两个长度相同的区间,表示子串Sl1Sl1 ...

  9. django rest framework mixins

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAXQAAAEZCAIAAAAIa0mAAAAU/0lEQVR4nO2d247cxoGG5y3yKH6AAf

  10. zabbix3.2添加web页面监控(Web monitoring)

    应用场景: 存在一种情况:nginx或者httpd服务本身运行正常,但是网页挂了,类似于网页被黑,或者40X之类的... 可以用zabbix把web页面访问也监控起来,第一时间得知web崩溃信息并做相 ...