| | |
| | | //package com.panzhihua.applets.api; |
| | | // |
| | | //import com.alibaba.fastjson.JSON; |
| | | //import com.alibaba.fastjson.JSONObject; |
| | | //import com.panzhihua.common.model.vos.R; |
| | | //import com.panzhihua.common.utlis.StringUtils; |
| | | //import io.swagger.annotations.ApiOperation; |
| | | //import lombok.extern.slf4j.Slf4j; |
| | | //import org.checkerframework.checker.units.qual.A; |
| | | //import org.springframework.web.bind.annotation.*; |
| | | // |
| | | //import java.io.*; |
| | | //import java.net.HttpURLConnection; |
| | | //import java.net.MalformedURLException; |
| | | //import java.net.ProtocolException; |
| | | //import java.net.URL; |
| | | //import java.util.ArrayList; |
| | | //import java.util.HashMap; |
| | | //import java.util.List; |
| | | //import java.util.Map; |
| | | // |
| | | //@Slf4j |
| | | //@RestController |
| | | //@RequestMapping("/official") |
| | | //public class WxOfficialApi { |
| | | // |
| | | // //公众号appid |
| | | // private List<String> appidList = new ArrayList<String>(){{this.add("wx7c733ebbf6c55ecf");this.add("wxc94f0cddf13577d5");}}; |
| | | // //公众号secret |
| | | // private List<String> secretList = new ArrayList<String>(){{this.add("500290552cbfdd1c1c18131c5807b6ae");this.add("3418127405845701497a09f65678953f");}}; |
| | | // |
| | | // /** |
| | | // * 获取token |
| | | // * @param appid 公众号appid |
| | | // * @param secret 公众号secret |
| | | // * @return token |
| | | // */ |
| | | // private String getToken(String appid,String secret) throws MalformedURLException, IOException, ProtocolException { |
| | | // // access_token接口https请求方式: GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET |
| | | // String path = " https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential"; |
| | | // URL url = new URL(path+"&appid=" + appid + "&secret=" + secret); |
| | | // HttpURLConnection connection = (HttpURLConnection) url.openConnection(); |
| | | // connection.setRequestMethod("GET"); |
| | | // connection.connect(); |
| | | // |
| | | // InputStream in = connection.getInputStream(); |
| | | // byte[] b = new byte[100]; |
| | | // int len = -1; |
| | | // StringBuffer sb = new StringBuffer(); |
| | | // while((len = in.read(b)) != -1) { |
| | | // sb.append(new String(b,0,len)); |
| | | // } |
| | | // |
| | | //// System.out.println(sb.toString()); |
| | | // in.close(); |
| | | // return sb.toString(); |
| | | // } |
| | | // |
| | | // /** |
| | | // * 通过token获取公众号文章 |
| | | // * @param token token |
| | | // * @return 获取的文章列表结果 |
| | | // */ |
| | | // private String getContentList(String token) throws IOException { |
| | | // String path = " https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=" + token; |
| | | // URL url = new URL(path); |
| | | // HttpURLConnection connection = (HttpURLConnection) url.openConnection(); |
| | | // connection.setRequestMethod("POST"); |
| | | // connection.setDoOutput(true); |
| | | // connection.setRequestProperty("content-type", "application/json;charset=utf-8"); |
| | | // connection.connect(); |
| | | // // post发送的参数 |
| | | // Map<String, Object> map = new HashMap<>(); |
| | | // map.put("type", "news"); // news表示图文类型的素材,具体看API文档 |
| | | // map.put("offset", 0); |
| | | // map.put("count", 5); |
| | | // // 将map转换成json字符串 |
| | | // String paramBody = JSON.toJSONString(map); // 这里用了Alibaba的fastjson |
| | | // |
| | | // OutputStream out = connection.getOutputStream(); |
| | | // BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(out)); |
| | | // bw.write(paramBody); // 向流中写入参数字符串 |
| | | // bw.flush(); |
| | | // |
| | | // InputStream in = connection.getInputStream(); |
| | | // byte[] b = new byte[100]; |
| | | // int len = -1; |
| | | // StringBuffer sb = new StringBuffer(); |
| | | // while((len = in.read(b)) != -1) { |
| | | // sb.append(new String(b,0,len)); |
| | | // } |
| | | // |
| | | // in.close(); |
| | | // return sb.toString(); |
| | | // } |
| | | // |
| | | // |
| | | // @ApiOperation(value = "拉取公众号列表") |
| | | // @GetMapping("/list/noToken") |
| | | // public R pageDiscuss() throws Exception{ |
| | | // WxOfficialApi officialApi = new WxOfficialApi(); |
| | | // |
| | | // List<String> tokenList = new ArrayList<>(); |
| | | // if(!appidList.isEmpty()){ |
| | | // for (int i = 0; i < appidList.size(); i++) { |
| | | // String token = officialApi.getToken(appidList.get(i),secretList.get(i)); |
| | | // log.info("通过appid:"+appidList.get(i)+"获取token返回参数:" + token); |
| | | // JSONObject tokenJson = JSON.parseObject(token); |
| | | // if(StringUtils.isNotEmpty(tokenJson)){ |
| | | // tokenList.add(tokenJson.getString("access_token")); |
| | | // } |
| | | // } |
| | | // } |
| | | // |
| | | // List<JSONObject> resultList = new ArrayList<>(); |
| | | // if(!tokenList.isEmpty()){ |
| | | // tokenList.forEach(token -> { |
| | | // try { |
| | | // String result = officialApi.getContentList(token); |
| | | // log.info("通过token获取文章列表成功,返回结果:" + result); |
| | | // resultList.add(JSON.parseObject(result)); |
| | | // }catch (Exception e){ |
| | | // log.error("通过token获取文章列表失败,错误原因:" + e.getMessage()); |
| | | // } |
| | | // }); |
| | | // } |
| | | // return R.ok(resultList); |
| | | // } |
| | | // |
| | | //} |
| | | package com.panzhihua.applets.api; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.panzhihua.common.model.vos.R; |
| | | import com.panzhihua.common.utlis.StringUtils; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.checkerframework.checker.units.qual.A; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.io.*; |
| | | import java.net.HttpURLConnection; |
| | | import java.net.MalformedURLException; |
| | | import java.net.ProtocolException; |
| | | import java.net.URL; |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | @Slf4j |
| | | @RestController |
| | | @RequestMapping("/official") |
| | | public class WxOfficialApi { |
| | | |
| | | //公众号appid |
| | | private List<String> appidList = new ArrayList<String>(){{this.add("wx7c733ebbf6c55ecf");this.add("wxc94f0cddf13577d5");}}; |
| | | //公众号secret |
| | | private List<String> secretList = new ArrayList<String>(){{this.add("500290552cbfdd1c1c18131c5807b6ae");this.add("3418127405845701497a09f65678953f");}}; |
| | | |
| | | /** |
| | | * 获取token |
| | | * @param appid 公众号appid |
| | | * @param secret 公众号secret |
| | | * @return token |
| | | */ |
| | | private String getToken(String appid,String secret) throws MalformedURLException, IOException, ProtocolException { |
| | | // access_token接口https请求方式: GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET |
| | | String path = " https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential"; |
| | | URL url = new URL(path+"&appid=" + appid + "&secret=" + secret); |
| | | HttpURLConnection connection = (HttpURLConnection) url.openConnection(); |
| | | connection.setRequestMethod("GET"); |
| | | connection.connect(); |
| | | |
| | | InputStream in = connection.getInputStream(); |
| | | byte[] b = new byte[100]; |
| | | int len = -1; |
| | | StringBuffer sb = new StringBuffer(); |
| | | while((len = in.read(b)) != -1) { |
| | | sb.append(new String(b,0,len)); |
| | | } |
| | | |
| | | // System.out.println(sb.toString()); |
| | | in.close(); |
| | | return sb.toString(); |
| | | } |
| | | |
| | | /** |
| | | * 通过token获取公众号文章 |
| | | * @param token token |
| | | * @return 获取的文章列表结果 |
| | | */ |
| | | private String getContentList(String token) throws IOException { |
| | | String path = " https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=" + token; |
| | | URL url = new URL(path); |
| | | HttpURLConnection connection = (HttpURLConnection) url.openConnection(); |
| | | connection.setRequestMethod("POST"); |
| | | connection.setDoOutput(true); |
| | | connection.setRequestProperty("content-type", "application/json;charset=utf-8"); |
| | | connection.connect(); |
| | | // post发送的参数 |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("type", "news"); // news表示图文类型的素材,具体看API文档 |
| | | map.put("offset", 0); |
| | | map.put("count", 5); |
| | | // 将map转换成json字符串 |
| | | String paramBody = JSON.toJSONString(map); // 这里用了Alibaba的fastjson |
| | | |
| | | OutputStream out = connection.getOutputStream(); |
| | | BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(out)); |
| | | bw.write(paramBody); // 向流中写入参数字符串 |
| | | bw.flush(); |
| | | |
| | | InputStream in = connection.getInputStream(); |
| | | byte[] b = new byte[100]; |
| | | int len = -1; |
| | | StringBuffer sb = new StringBuffer(); |
| | | while((len = in.read(b)) != -1) { |
| | | sb.append(new String(b,0,len)); |
| | | } |
| | | |
| | | in.close(); |
| | | return sb.toString(); |
| | | } |
| | | |
| | | |
| | | @ApiOperation(value = "拉取公众号列表") |
| | | @GetMapping("/list/noToken") |
| | | public R pageDiscuss() throws Exception{ |
| | | WxOfficialApi officialApi = new WxOfficialApi(); |
| | | |
| | | List<String> tokenList = new ArrayList<>(); |
| | | if(!appidList.isEmpty()){ |
| | | for (int i = 0; i < appidList.size(); i++) { |
| | | String token = officialApi.getToken(appidList.get(i),secretList.get(i)); |
| | | log.info("通过appid:"+appidList.get(i)+"获取token返回参数:" + token); |
| | | JSONObject tokenJson = JSON.parseObject(token); |
| | | if(StringUtils.isNotEmpty(tokenJson)){ |
| | | tokenList.add(tokenJson.getString("access_token")); |
| | | } |
| | | } |
| | | } |
| | | |
| | | List<JSONObject> resultList = new ArrayList<>(); |
| | | if(!tokenList.isEmpty()){ |
| | | tokenList.forEach(token -> { |
| | | try { |
| | | String result = officialApi.getContentList(token); |
| | | log.info("通过token获取文章列表成功,返回结果:" + result); |
| | | resultList.add(JSON.parseObject(result)); |
| | | }catch (Exception e){ |
| | | log.error("通过token获取文章列表失败,错误原因:" + e.getMessage()); |
| | | } |
| | | }); |
| | | } |
| | | return R.ok(resultList); |
| | | } |
| | | |
| | | } |