由于公众号换了公司主体,需要做迁移,玩家的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. DRF 解析器和渲染器

    一,DRF 解析器 根据请求头 content-type 选择对应的解析器就请求体内容进行处理. 1. 仅处理请求头content-type为application/json的请求体 from dja ...

  2. Cash Machine POJ - 1276 多重背包二进制优化

    题意:多重背包模型  n种物品 每个m个  问背包容量下最多拿多少 这里要用二进制优化不然会超时 #include<iostream> #include<cstdio> #in ...

  3. BZOJ3105 新Nim游戏 【拟阵】

    题目分析: 我不知道啥是拟阵啊,但有大佬说线性基相关的都是拟阵,所以直接贪心做了. 题目代码: #include<bits/stdc++.h> using namespace std; ; ...

  4. centos6.8下安装破解quartus prime16.0以及modelsim ae安装

    前言 装逼使用 流程 安装modelsim: 1.modelsim ae在linux下是32位的,对于64位系统需要安装32位库:yum install xulrunner.i686 2.给予权限: ...

  5. 【XSY2693】景中人 区间DP

    题目描述 平面上有\(n\)个点,你要用一些矩形覆盖这些点,要求: 每个矩形的下边界为\(y=0\) 每个矩形的大小不大于\(s\) 问你最少要用几个矩形. \(n\leq 100,1\leq y\l ...

  6. 基于Thinkphp5.0 小程序登录插件应用

    资源连接: wulongtao/think-wxminihelper 具体怎么安装,不介绍了,有不懂再问我吧: 主要重点如下: wepy:index.wpy this.$parent.getUserI ...

  7. Hdoj 2454.Degree Sequence of Graph G 题解

    Problem Description Wang Haiyang is a strong and optimistic Chinese youngster. Although born and bro ...

  8. Java List 遍历

    //方法1 Iterator it1 = list.iterator(); while(it1.hasNext()){ System.out.println(it1.next()); } //方法2 ...

  9. photoshop学习2

    关于PS学习的一些基础知识.PS用了很长时间了,从来就没有明白过到底在做什么.今天看了视频,发现原来自己根本不会PS,其实本来也未曾会过.以前自己使用PS做一些工作,也仅限于裁图片,调一下亮度对比度, ...

  10. noiac26 T1 (并查集)

    考虑计算每个位置的数作为最小值时有多少种情况 方便起见,以位置为第二关键字比较大小,这样就不会出现“相同的”数 可以方便地计算出以i位置为最小值的区间端点的可行位置:[A,i],[i,B] 这是我选的 ...