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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Spring Boot :四大神器之Actuator
Spring Boot有四大神器,分别是auto-configuration、starters、cli、actuator,本文主要讲actuator。actuator是spring boot提供的对应用系统的自省和监控的集成功能,可以对应用系统进行配置查看、相关功能统计等。
Freedom123
2024/03/29
1760
Spring Boot :四大神器之Actuator
springBoot系列教程01:elasticsearch的集成及使用
 1.首先安装elasticsearch 集群环境,参考 http://www.cnblogs.com/xiaochangwei/p/8033773.html
肖哥哥
2018/08/02
1.1K0
springBoot系列教程01:elasticsearch的集成及使用
第11章 Spring Boot应用监控第11章 Spring Boot应用监控小结
在实际的生产系统中,我们怎样知道我们的应用运行良好呢?我们往往需要对系统实际运行的情况(各种cpu,io,disk,db,业务功能等指标)进行监控运维。这需要耗费我们不少精力来搞这些工作。在SpringBoot中,我们完全不需要面对这样的难题。
一个会写诗的程序员
2018/08/20
1.4K0
Spring Boot的应用启动与关闭
Spring Boot应用可以打成jar包,其中内嵌tomcat,因此可以直接启动使用。但是在Spring Boot应用启动之前,首先需要进行打包,本文讲述的是Maven工程的打包,打包需要的前提条件(pom.xml文件中的内容)是:
Tyan
2019/05/25
1.7K0
springboot Actuator
springboot Actuator只需要加入依赖即可使用: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> application.properties 中可以加入以下配置: # false,表示不敏感,可以随意访问,否则就是做了一些保护,不能随意访问。 endpoints.mapping
yawn
2018/03/14
6960
Spring Boot Admin 2 值得了解的新变化
6.19号,spring团队发布了期待已久的 Spring Cloud Finchley.RELEASE 版本。 期间Spring Boot Admin 也发布了 2.0.1 兼容它,我在升级pig 到Finchley.RELEASE的同时 发现很多有意思的变化整理发出来
冷冷
2018/06/28
1.2K0
SOFARPC源码解析-搭建环境
简介摘要 SOFA 是蚂蚁金服自主研发的金融级分布式中间件,包含构建金融级云原生架构所需的各个组件,包括微服务研发框架,RPC 框架,服务注册中心,分布式定时任务,限流/熔断框架,动态配置推送,分布式链路追踪,Metrics监控度量,分布式高可用消息队列,分布式事务框架,分布式数据库代理层等组件,是一套分布式架构的完整的解决方案,也是在金融场景里锤炼出来的最佳实践。 SOFARPC是蚂蚁金服开源的高可扩展性、高性能、生产级的Java RPC框架。SOFARPC致力于简化应用之间的RPC调用,为应用提供方便透明、稳定高效的点对点远程服务调用方案。为了用户和开发者方便的进行功能扩展,SOFARPC提供丰富的模型抽象和可扩展接口,包括过滤器、路由、负载均衡等等。 SOFARPC功能特性:(1)透明化、高性能的远程服务调用;(2)支持多种服务路由及负载均衡策略;(3)支持多种注册中心的集成;(4)支持多种协议;(5)支持同步、单向、回调、泛化等多种调用方式;(6)支持集群容错、服务预热、自动故障隔离;(7)强大的扩展功能,可以按需扩展各个功能组件。 SOFARPC Github:https://github.com/alipay/sofa-rpc 架构设计 SOFARPC从下到上分为两层:核心层:包含RPC 的核心组件(例如我们的各种接口、API、公共包)以及一些通用的实现(例如随机等负载均衡算法)。功能实现层:所有的功能实现层的用户都是平等的,都是基于扩展机制实现的。
爱撸猫的杰
2019/03/28
1.3K0
SOFARPC源码解析-搭建环境
《Spring Boot极简教程》第3章 一键启动应用程序本章源代码
首先安装Spring Boot CLI,参考文档:http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#getting-started-installing-the-cli
一个会写诗的程序员
2018/08/20
5620
《Spring Boot极简教程》第3章 一键启动应用程序本章源代码
SpringBoot入门建站全系列(二十九)Actuator服务监控及SpringBootMonitor单机监控页面
Actuaotr是spring boot项目中非常强大的一个功能,有助于对应用程序进行监控和管理,通过restful api请求来监管、审计、收集应用的运行情况,针对微服务而言它是必不可少的一个环节。
品茗IT
2020/05/28
2.4K0
Spring学习笔记(二十九)——SpringBoot Actuator指标监控
在项目上线后,或者未来每一个微服务在云上部署以后,我们都需要对其进行监控、追踪、审计、控制等。SpringBoot就抽取了Actuator场景,使得我们每个微服务快速引用即可获得生产级别的应用监控、审计等功能。
不愿意做鱼的小鲸鱼
2022/09/26
1.2K0
Spring学习笔记(二十九)——SpringBoot Actuator指标监控
Spring Boot 2.0 新特性(二):新增事件ApplicationStartedEvent
今天继续来聊Spring Boot 2.0的新特性。本文将具体说说2.0版本中的事件模型,尤其是新增的事件: ApplicationStartedEvent。 原文首发:http://blog.didispace.com/Spring-Boot-2-0-feature-2-ApplicationStartedEvent/ 在Spring Boot 2.0中对事件模型做了一些增强,主要就是增加了 ApplicationStartedEvent事件,所以在2.0版本中所有的事件按执行的先后顺序如下: Appli
程序猿DD
2018/03/21
2K0
原 荐 SpringBoot 2.0 系列0
SpringBoot 2.0 系列004 --启动实战之配置文件 配置文件 配置文件加载流程 很多文档包括官方文档说SB的默认配置文件是application开头的文件,那么是为什么呢? 我们先
石奈子
2018/06/13
8900
SpringBoot监控工具之《Actuator》
有句话怎么说呢?学的越多,不知道的就越多,现在感觉学的越来越废了,不学又不行,最近一直在钻研 SpringBoot相关的内容,准备先写一些基础的案例代码,后续研究的更加透彻,写一些有内涵的刨析文章发表出来,下面开始吧!
框架师
2021/11/22
1.7K0
SpringBoot监控工具之《Actuator》
聊聊Spring Boot Actuator
在本文中,我们将介绍Spring Boot Actuator。我们将首先介绍基础知识,然后详细讨论Spring Boot 1.x和2.x中的可用内容。
东溪陈姓少年
2020/08/06
1.3K0
Spring Boot Actuator监控使用详解
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
程序新视界
2019/11/20
1.9K0
第一节,创建第一个springboot项目
版权声明:本文为博主原创文章,未经博主允许不得转载。 本系列使用工具 IDEA 1.创建项目 2.新创建完项目目录 3.开启项目 有键打开 执行 如下图,就代表启动成功了 . __
DencyCheng
2018/11/05
7650
SpringBoot2.0 基础案例(16):配置Actuator组件,实现系统监控
在生产环境中,需要实时或定期监控服务的可用性。Spring Boot的actuator(健康监控)功能提供了很多监控所需的接口,可以对应用系统进行配置查看、相关功能统计等。
知了一笑
2019/07/19
5360
SpringCloud 2.x学习笔记:22、使用Sentinel实现接口限流
https://github.com/alibaba/Sentinel/releases
程裕强
2019/07/11
1.8K0
SpringCloud 2.x学习笔记:22、使用Sentinel实现接口限流
springboot(十九):使用Spring Boot Actuator监控应用
微服务的特点决定了功能模块的部署是分布式的,大部分功能模块都是运行在不同的机器上,彼此通过服务调用进行交互,前后台的业务流会经过很多个微服务的处理和传递,出现了异常如何快速定位是哪个环节出现了问题? 在这种框架下,微服务的监控显得尤为重要。本文主要结合Spring Boot Actuator,跟大家一起分享微服务Spring Boot Actuator的常见用法,方便我们在日常中对我们的微服务进行监控治理。 Actuator监控 Spring Boot使用“习惯优于配置的理念”,采用包扫描和自动化配置的机制
纯洁的微笑
2018/04/18
1.3K0
01-如何在 Spring Boot 应用程序中使用 Actuator 监控和管理端点,提高应用程序的生产力?
健康信息可以检查应用的运行状态,它经常被监控软件用来提醒人们生产环境是否存在问题。health端点暴露的默认信息取决于端点是如何被访问的。
JavaEdge
2023/05/24
9900
01-如何在 Spring Boot 应用程序中使用 Actuator 监控和管理端点,提高应用程序的生产力?
推荐阅读
相关推荐
Spring Boot :四大神器之Actuator
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验