Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >微信公众号获取token,上传素材

微信公众号获取token,上传素材

作者头像
JQ实验室
发布于 2022-02-10 06:15:31
发布于 2022-02-10 06:15:31
1.8K00
代码可运行
举报
文章被收录于专栏:实用技术实用技术
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static JSONObject getToken(String appId,String appSecret){
         String url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appId+"&secret="+appSecret;
         HttpURLConnection con = null;
         BufferedReader bufferedReader=null;
         try {
             URL urlObj = new URL(url);
             // 打开连接
             con = (HttpURLConnection) urlObj.openConnection();
             // 设置请求通用参数
             con.setRequestProperty("accept", "*/*");
             con.setRequestProperty("connection", "Keep-Alive");
             con.connect();
             bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream()));
             
             StringBuffer buffer = new StringBuffer();
             String line = null;
             while ((line = bufferedReader.readLine()) != null) {
                 buffer.append(line);
             }
             String result = buffer.toString();
             JSONObject resultJSON = new JSONObject(result);
             if (resultJSON != null) {
                 System.out.println(resultJSON.toString());
                if(null!=resultJSON.get("access_token")) {
                    return resultJSON;
                }else {
                    throw new Exception("获取微信token失败,APPID="+appId+";微信消息:"+resultJSON.getString("errmsg")+",code="+resultJSON.getString("errcode"));
                }
             }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (bufferedReader != null) {
                try {
                    bufferedReader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(null!=con) {
                con.disconnect();
            }
        }
       return null;
    }
    

    
    /**
     * 发送请求
     * @Desc 
     */
    public static  String connectHttpsByPost(String url,String token,String type, String KK, File file) throws Exception {
        if(token==null) {
            token = getToken("1111", "1111").get("access_token").toString();
        }
        String path = "https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=" + token;
        path = "https://api.weixin.qq.com/cgi-bin/media/upload?access_token=" + token;
        
        URL urlObj = new URL(path);
        //连接
        HttpURLConnection con = (HttpURLConnection) urlObj.openConnection();
        String result = null;
        
        con.setDoInput(true);
        con.setDoOutput(true);
        con.setUseCaches(false);// post方式不能使用缓存

        // 设置请求头信息
        con.setRequestProperty("Connection", "Keep-Alive");
        con.setRequestProperty("Charset", "UTF-8");
        // 设置边界
        String BOUNDARY = "----------" + System.currentTimeMillis();
        con.setRequestProperty("Content-Type", "multipart/form-data; boundary="+ BOUNDARY);

        // 请求正文信息
        // 第一部分:
        StringBuilder sb = new StringBuilder();
        sb.append("--"); // 必须多两道线
        sb.append(BOUNDARY);
        sb.append("\r\n");
        sb.append("Content-Disposition: form-data;name=\"media\";filelength=\"" + file.length() + "\";filename=\"" + file.getName() + "\"\r\n");
        sb.append("Content-Type:application/octet-stream\r\n\r\n");
        byte[] head = sb.toString().getBytes("utf-8");
        // 获得输出流
        OutputStream out = new DataOutputStream(con.getOutputStream());
        // 输出表头
        out.write(head);

        // 文件正文部分
        // 把文件已流文件的方式 推入到url中
        DataInputStream in = new DataInputStream(new FileInputStream(file));
        int bytes = 0;
        byte[] bufferOut = new byte[1024];
        while ((bytes = in.read(bufferOut)) != -1) {
            out.write(bufferOut, 0, bytes);
        }
        in.close();
        // 结尾部分
        if(null!=KK) {
            out.write(("--" + BOUNDARY + "\r\n").getBytes());
            out.write("Content-Disposition: form-data; name=\"description\";\r\n\r\n".getBytes("utf-8"));
            out.write(String.format("{\"title\":\"%s\", \"introduction\":\"%s\"}",file.getName(),file.getName()).getBytes("utf-8"));
        }
        byte[] foot = ("\r\n--" + BOUNDARY + "--\r\n").getBytes("utf-8");// 定义最后数据分隔线
        out.write(foot);
        out.flush();
        out.close();
        StringBuffer buffer = new StringBuffer();
        BufferedReader reader = null;
        try {
            // 定义BufferedReader输入流来读取URL的响应
            reader = new BufferedReader(new InputStreamReader(con.getInputStream()));
            String line = null;
            while ((line = reader.readLine()) != null) {
                buffer.append(line);
            }
            if (result == null) {
                result = buffer.toString();
            }
        } catch (IOException e) {
            System.out.println("发送POST请求出现异常!" + e);
            e.printStackTrace();
        } finally {
            if (reader != null) {
                reader.close();
            }
        }
        return result;
    }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-07-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java微信公众平台开发(八)--多媒体消息回复之音乐
我们上一篇写了关注出发图片的回复。想着在发送一次音乐,最后基于回复消息分类情况下,实现一个简单的只能话回复。先附一张大致效果图。
用户2417870
2019/09/18
7050
Java模拟表单post提交,可支持图片上传
/** * 模拟表单post * * @param textMap 文本域 * @param fileMap 文件 * */ public static String postForm(String urlStr, Map<String, String> textMap, Map<String, String> fileMap) throws IOException { String res = ""; HttpURLConnection conn = null; In
用户1503405
2021/09/23
1.4K0
腾讯云短信接口服务
做个小程序需要发送验证码,短信接口是腾讯云的。了解官方的sdk和demo发现对于我这种浅层次的人来说太麻烦了,然后就从网上找了一版。短信服务开通可以访问 腾讯云短信服务
聚优云惠
2019/12/26
24.2K0
Java企业微信开发_06_素材管理之上传本地临时素材文件至微信服务器
media_id是可复用的,同一个media_id可用于消息的多次发送(3天内有效)
shirayner
2018/08/10
4.4K0
Java企业微信开发_06_素材管理之上传本地临时素材文件至微信服务器
Java企业微信开发_08_素材管理之下载微信临时素材到本地服务器
一、本节要点 1.获取临时素材接口 请求方式:GET(HTTPS) 请求地址:https://qyapi.weixin.qq.com/cgi-bin/media/get?access_token=AC
shirayner
2018/08/10
2.9K0
Java企业微信开发_08_素材管理之下载微信临时素材到本地服务器
Http post 发送 multipart/form-data 格式数据
Http post 发送 multipart/form-data 格式数据-Java 实现
用户7043603
2022/02/24
2.7K0
Java微信公众平台开发(七)--多媒体消息回复之图片回复
之前我们在做消息回复的时候我们对回复的消息简单做了分类,前面也有讲述如何回复【普通消息类型消息】,这里将讲述多媒体消息的回复方法,【多媒体消息】包含回复图片消息/回复语音消息/回复视频消息/回复音乐消息,这里以图片消息的回复为例进行讲解!
用户2417870
2019/09/18
1.1K0
Java微信公众平台开发(七)--多媒体消息回复之图片回复
电商收付通系列④,图片预上传,生成MediaID
部分微信支付业务指定商户需要使用图片上传 API来上报图片信息,从而获得必传参数的值:图片MediaID。即电商收付通接口有涉及到需要传图片的参数,不可以直接传图片文件,均需要通过指定的图片上传接口获取MediaID,再把MediaID传给相应的字段。比如二级商户进件接口需要上传营业执照,字段是business_license_copy,那么需要预先生成MediaID,将MediaID的值传给business_license_copy。
悟空码字
2021/02/01
1.9K1
Java微信公众平台开发(六)--微信开发中的token获取
引用:access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效!
用户2417870
2019/09/18
2.2K0
Java微信公众平台开发(六)--微信开发中的token获取
微信公众号开发-素材/消息管理接口
本文是 微信公众号开发者模式介绍及接入 的后续,如没看过前文的话,可能看本文会有些懵逼。本文主要介绍微信公众平台的素材、消息管理接口的开发。由于个人的订阅号是没有大多数接口的权限的,所以我们需要使用微信官方提供的测试号来进行开发。测试号的申请可参考下文:
端碗吹水
2020/09/23
2.6K0
微信公众号开发-素材/消息管理接口
Java企业微信开发_04_消息推送之发送消息(主动)
(1)流程不同:发送消息是第三方服务器主动通知微信服务器向用户发消息。而被动回复消息是 用户发送消息之后,微信服务器将消息传递给 第三方服务器,第三方服务器接收到消息后,再对消息做出相应的回复消息。
shirayner
2018/08/10
6.1K1
Java使用HttpURLConnection上传文件
从普通Web页面上传文件非常easy。仅仅须要在form标签叫上enctype=”multipart/form-data”就可以,剩余工作便都交给浏览器去完毕数据收集并发送Http请求。可是假设没有页面的话要怎么上传文件呢?
全栈程序员站长
2022/07/07
2.1K0
微信公众号开发——2、微信网页开发
在公众号平台下,自定义菜单,添加菜单,并选择菜单内容跳转到指定页面地址即可(需认证后方可添加页面地址,个人账号暂不支持认证)。
全栈程序员站长
2022/09/01
7.8K0
Unity & 微信公众号 - 实现扫码关注登录
功能需求:登录时呈现公众号二维码,用户扫描二维码后,点击关注,事件响应给程序,实现登录,若已经关注,自动进入会话,事件同样响应给程序,实现登录。
CoderZ
2022/08/29
3K0
Unity & 微信公众号 - 实现扫码关注登录
java发送post请求,使用multipart/form-data的方式传递参数--《优化》
/** * 测试上传图片 * */ public static void testUploadImage(){ String url = "http://xxxtest/Api/testUploadModelBaking"; String fileName = "e:/username/textures/antimap_0017.png"; Map<String, String> textMap = new HashMa
JQ实验室
2022/01/11
5.4K0
微信公众号开发系统入门教程(公众号注册、开发环境搭建、access_token管理、Demo实现、natapp外网穿透)
微信公众号分为服务号、订阅号、企业号,订阅号可以个人申请,服务号和企业号要有企业资质才可以。
全栈程序员站长
2022/09/06
3K0
微信公众号开发系统入门教程(公众号注册、开发环境搭建、access_token管理、Demo实现、natapp外网穿透)
微信扫码支付
一,需要申请公司的微信公众号,以及商户号。然后在商户号中关联微信公众APPID。在商户平台添加扫码支付功能。
故久
2019/12/16
6.4K0
Gzip压缩文件和压缩字符串,web接口应用
打印输出: testPost发送内容:{"id":"10","name":"zhangliao"} 接口调用返回结果:"json串返回成功"
oktokeep
2024/11/21
1270
Java模拟http上传文件请求(HttpURLConnection,HttpClient4.4,RestTemplate)
1》.打开httpurlconnection连接,设置关键值:重点是设置请求方法post和设置不缓存;
JQ实验室
2022/02/09
1.4K0
H5获取公众号OPENID方法
获取openId方法,其中code是自动获取的,此文运行后就会获取用户的openId @RequestMapping(value="/openIdMsg",produces = MediaType.APPLICATION_JSON_VALUE + ";charset=UTF-8") @ResponseBody public void openIdMsg(HttpServletRequest request,HttpServletResponse response) throws IOException
芈亓
2022/06/17
1.8K1
推荐阅读
相关推荐
Java微信公众平台开发(八)--多媒体消息回复之音乐
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验