java调用微信_java调用微信公众平台接口(一)
微信公众平台
这两天在网上看了其他的方法,也调试了一些,然后自己整理了一下,方便自己学习,也方便大家使用。
调用接口
1、java调用上传图片接口
public final static String IMAGE = "https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=ACCESS_TOKEN";public staticString uploadimg(MultipartFile file ) {
CloseableHttpClient client=HttpClients.createDefault();//创建httppost
String requestUrl = IMAGE.replace("ACCESS_TOKEN", access_token);//替换调access_token
HttpPost post = newHttpPost(requestUrl);
RequestConfig config= RequestConfig.custom().setSocketTimeout(30000).setConnectTimeout(20000).build();
post.setConfig(config);
File f= null;try{
f= newFile(file.getOriginalFilename());
inputStreamToFile(file.getInputStream(),f);
FileUtils.copyInputStreamToFile(file.getInputStream(), f);
}catch(IOException e) {
e.printStackTrace();
}
String name=f.getName();
FileBody fileBody= newFileBody(f, ContentType.DEFAULT_BINARY,name);
String filename=fileBody.getFilename();long contentLength =fileBody.getContentLength();
ContentType contentType=fileBody.getContentType();
MultipartEntityBuilder builder=MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
builder.addPart("media", fileBody);//相当于 ,匹配@RequestParam("file")//.addPart()可以设置模拟浏览器的表单提交
HttpEntity entity =builder.build();
post.setEntity(entity);
String result= "";try{
CloseableHttpResponse e=client.execute(post);
HttpEntity resEntity=e.getEntity();if(entity != null) {
result=EntityUtils.toString(resEntity);
System.out.println("response content:" +result);
}
}catch(IOException var10) {
System.out.println("请求解析验证码io异常 "+var10);//logger.error("请求解析验证码io异常",var10);
var10.printStackTrace();
}returnresult;
}public static voidinputStreamToFile(InputStream ins, File file) {try{
OutputStream os= newFileOutputStream(file);int bytesRead = 0;byte[] buffer = new byte[8192];while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {
os.write(buffer,0, bytesRead);
}
os.close();
ins.close();
}catch(Exception e) {
e.printStackTrace();
}
}
2、新增永久图片素材
只需要修改 requestUrl
public final static String ADD_MATERIAL_IMAGE = "https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=ACCESS_TOKEN&type=TYPE";
3、新增永久视频素材
public final static String ADD_MATERIAL_IMAGE = "https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=ACCESS_TOKEN&type=TYPE";/*** 上传永久素材(除 图文)
*@paramfile
*@paramtype
*@paramtitle type为video时需要,其他类型设null
*@paramintroduction type为video时需要,其他类型设null
*@return{"media_id":MEDIA_ID,"url":URL}*/
public staticString uploadPermanentMaterial(File file, String type, String title, String introduction) {
String url= ADD_MATERIAL_IMAGE.replace("ACCESS_TOKEN", access_token).replace("TYPE", type);//替换调access_token
String result = null;try{
URL uploadURL= newURL(url);
HttpURLConnection conn=(HttpURLConnection) uploadURL.openConnection();
conn.setConnectTimeout(5000);
conn.setReadTimeout(30000);
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setUseCaches(false);
conn.setRequestMethod("POST");
conn.setRequestProperty("Connection", "Keep-Alive");
conn.setRequestProperty("Cache-Control", "no-cache");
String boundary= "-----------------------------" +System.currentTimeMillis();
conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" +boundary);
OutputStream output=conn.getOutputStream();
output.write(("--" + boundary + "\r\n").getBytes());
output.write(String.format("Content-Disposition: form-data; name=\"media\"; filename=\"%s\"\r\n", file.getName()).getBytes());
output.write("Content-Type: video/mp4 \r\n\r\n".getBytes());byte[] data = new byte[1024];int len = 0;
FileInputStream input= newFileInputStream(file);while ((len = input.read(data)) > -1) {
output.write(data,0, len);
}/*对类型为video的素材进行特殊处理*/
if ("video".equals(type)) {
output.write(("--" + boundary + "\r\n").getBytes());
output.write("Content-Disposition: form-data; name=\"description\";\r\n\r\n".getBytes());
output.write(String.format("{\"title\":\"%s\", \"introduction\":\"%s\"}", title, introduction).getBytes());
}
output.write(("\r\n--" + boundary + "--\r\n\r\n").getBytes());
output.flush();
output.close();
input.close();
InputStream resp=conn.getInputStream();
StringBuffer sb= newStringBuffer();while ((len = resp.read(data)) > -1)
sb.append(new String(data, 0, len, "utf-8"));
resp.close();
result=sb.toString();
}catch(IOException e) {//....
}returnresult;
}
上传视频的这个方法也可以上传其他素材。
4、上传永久图文素材
首先考虑传值,官方的示例
{"articles": [{"title": TITLE,"thumb_media_id": THUMB_MEDIA_ID,"author": AUTHOR,"digest": DIGEST,"show_cover_pic": SHOW_COVER_PIC(0 / 1),"content": CONTENT,"content_source_url": CONTENT_SOURCE_URL,"need_open_comment":1,"only_fans_can_comment":1},//若新增的是多图文素材,则此处应还有几段articles结构
]
}
1、直接put json,下面是一个简单的例子。这样很容易完成示例
//{ "tag":{ "id":134,//标签id "name":"广东" } }
JSONObject json1= newJSONObject();
json1.put("name", "广东");
JSONObject json= newJSONObject();
json.put("tag", json1);
2、使用实体类,可以参数与json转换
/*获取素材列表参数实体类**/
public classAddNewsParam {privateArticles [] articles;public classArticles {private String title;//图文消息的标题
private String thumb_media_id;//图文消息的封面图片素材id(必须是永久mediaID)
private String author;//作者
private String digest;//图文消息的摘要,仅有单图文消息才有摘要,多图文此处为空
private Integer show_cover_pic;//是否显示封面,0为false,即不显示,1为true,即显示
private String content;//图文消息的具体内容,支持HTML标签,必须少于2万字符,小于1M,且此处会去除JS
java调用微信_java调用微信公众平台接口(一)相关推荐
- Java之 XML与JSON(公众平台接口数据格式)
Java之 XML与JSON(公众平台接口数据格式) 1. XML 2. XML语法 2.1XML文档声明 2.2 标记(元素/标签/节点) 2.3 一个XML文档中,必须有且且仅允许有一个根标记 2 ...
- python 微信公众号网页接口调用_Python调用微信公众平台接口操作示例
本文实例讲述了Python调用微信公众平台接口操作.分享给大家供大家参考,具体如下: 这里使用的是Django,其他类似 # coding=utf-8 from django.http import ...
- python连接微信接口开发教程_Python调用微信公众平台接口操作示例
本文实例讲述了Python调用微信公众平台接口操作.分享给大家供大家参考,具体如下: 这里使用的是Django,其他类似 # coding=utf-8 from django.http import ...
- python微信api_Python调用微信公众平台接口操作示例
本文实例讲述了Python调用微信公众平台接口操作.分享给大家供大家参考,具体如下: 这里使用的是Django,其他类似 # coding=utf-8 from django.http import ...
- python链接微信接口开发教程_Python调用微信公众平台接口操作示例
本文实例讲述了Python调用微信公众平台接口操作.分享给大家供大家参考,具体如下: 这里使用的是Django,其他类似 # coding=utf-8 from django.http import ...
- 共享一个调用微信公众平台接口的客户端类库
由于我所开发活动项目经常要用到微信公众平台所提供的接口,所以本人专门开发了微信客户端的类库. 经过了几个项目的实践,特意将该类库共享出来.源代码已经放在了github上,供大家使用. 首先介绍一下设计 ...
- 微信公众号api关注接口php,微信公众平台接口开发入门示例
本文实例讲述了微信公众平台接口开发入门示例.分享给大家供大家参考.具体如下: 微信公众平台的接口开发是一个现在比较常用的功能了,很多的人都会去了解一下微信公众平台一些简单开发应用,这里就来给大家介绍一 ...
- 微信公众平台接口开发基础
微信接口开发的要点:公众号(订阅号.服务号).微信公众号提供的对应接口限制等.微信平台开发几乎涵盖了各行各业,小程序也让微信着实火了一把,时代在不断地发展,开发也在不断地切换自己的思维和平台.俗话说, ...
- 微信公众平台接口简单介绍
微信公众平台的管理地址是:https://mp.weixin.qq.com 注册完个人公众号以后,登录到微信公众平台的管理后台,需要用微信扫一下二维码才能登录进去哦... 这个后台提供了基本的对公众号 ...
- 微信公众平台接口调试工具——蓝牙设备调试篇
微信公众平台接口调试工具--蓝牙设备调试篇 第一步:获取token 需要两个参数:appid和appsecret 下面将如何获取上面两参数 首先进入公众号,点击开发者工具,点击公众平台测试账号,如下图 ...
最新文章
- 二值化算法OTSU源码解析
- R语言union函数计算数据对象(vector、list、dataframe)的并集:union函数计算两个vector向量、dataframe、列表list的并集
- Ubuntu16.04 配置pytorch
- python怎么写文件-Python读写文件
- Scala操作外部数据
- [设计模式-行为型]命令模式(Command)
- 回归本源:JavaScript 之中的值和引用
- 计算机数值分析为什么那么难,数值分析方法
- WPF 框架开发 ColumnDefinition 和 RowDefinition 的代码在哪
- Windows环境搭建Red5流媒体服务器指南
- ORACLE安装之环境搭建
- dbv连oracle,oracle工具:DBV的用法
- 学术会议 Rebuttal 模板
- js打印window.print()图片打印
- python can总线_MicroPython教程之TPYBoard v102 CAN总线通信
- “烤面经了“~2022最新大厂Java面试真题总结,可带劲了
- mysql属于dbms还是dbs_DB、DBMS和DBS三者之间有什么关系_数据库
- 基于PYNQ的AD采集系统
- 宝宝出生需要的相关资料
- Java8新特性1:lambda表达式入门--由浅入深,从单发步枪迈向自动步枪
热门文章
- 森鹰窗业通过创业板注册:年营收9.57亿 应收账款达2.7亿
- JavaScript面试题,let和var的区别,let和const是什么意思?
- 特征提取(三)SURF算法详解
- Android 各版本关闭 Selinux 的方法
- Mac OS X Mavericks使用手册
- java map comparator,Java TreeMap comparator()方法
- 比较器Comparator使用
- 数字化转型与公司淘汰
- css表格中怎么设置表格间距,css如何设置表格间距
- node.js基础了解