微信公众平台

这两天在网上看了其他的方法,也调试了一些,然后自己整理了一下,方便自己学习,也方便大家使用。

调用接口

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调用微信公众平台接口(一)相关推荐

  1. Java之 XML与JSON(公众平台接口数据格式)

    Java之 XML与JSON(公众平台接口数据格式) 1. XML 2. XML语法 2.1XML文档声明 2.2 标记(元素/标签/节点) 2.3 一个XML文档中,必须有且且仅允许有一个根标记 2 ...

  2. python 微信公众号网页接口调用_Python调用微信公众平台接口操作示例

    本文实例讲述了Python调用微信公众平台接口操作.分享给大家供大家参考,具体如下: 这里使用的是Django,其他类似 # coding=utf-8 from django.http import ...

  3. python连接微信接口开发教程_Python调用微信公众平台接口操作示例

    本文实例讲述了Python调用微信公众平台接口操作.分享给大家供大家参考,具体如下: 这里使用的是Django,其他类似 # coding=utf-8 from django.http import ...

  4. python微信api_Python调用微信公众平台接口操作示例

    本文实例讲述了Python调用微信公众平台接口操作.分享给大家供大家参考,具体如下: 这里使用的是Django,其他类似 # coding=utf-8 from django.http import ...

  5. python链接微信接口开发教程_Python调用微信公众平台接口操作示例

    本文实例讲述了Python调用微信公众平台接口操作.分享给大家供大家参考,具体如下: 这里使用的是Django,其他类似 # coding=utf-8 from django.http import ...

  6. 共享一个调用微信公众平台接口的客户端类库

    由于我所开发活动项目经常要用到微信公众平台所提供的接口,所以本人专门开发了微信客户端的类库. 经过了几个项目的实践,特意将该类库共享出来.源代码已经放在了github上,供大家使用. 首先介绍一下设计 ...

  7. 微信公众号api关注接口php,微信公众平台接口开发入门示例

    本文实例讲述了微信公众平台接口开发入门示例.分享给大家供大家参考.具体如下: 微信公众平台的接口开发是一个现在比较常用的功能了,很多的人都会去了解一下微信公众平台一些简单开发应用,这里就来给大家介绍一 ...

  8. 微信公众平台接口开发基础

    微信接口开发的要点:公众号(订阅号.服务号).微信公众号提供的对应接口限制等.微信平台开发几乎涵盖了各行各业,小程序也让微信着实火了一把,时代在不断地发展,开发也在不断地切换自己的思维和平台.俗话说, ...

  9. 微信公众平台接口简单介绍

    微信公众平台的管理地址是:https://mp.weixin.qq.com 注册完个人公众号以后,登录到微信公众平台的管理后台,需要用微信扫一下二维码才能登录进去哦... 这个后台提供了基本的对公众号 ...

  10. 微信公众平台接口调试工具——蓝牙设备调试篇

    微信公众平台接口调试工具--蓝牙设备调试篇 第一步:获取token 需要两个参数:appid和appsecret 下面将如何获取上面两参数 首先进入公众号,点击开发者工具,点击公众平台测试账号,如下图 ...

最新文章

  1. 二值化算法OTSU源码解析
  2. R语言union函数计算数据对象(vector、list、dataframe)的并集:union函数计算两个vector向量、dataframe、列表list的并集
  3. Ubuntu16.04 配置pytorch
  4. python怎么写文件-Python读写文件
  5. Scala操作外部数据
  6. [设计模式-行为型]命令模式(Command)
  7. 回归本源:JavaScript 之中的值和引用
  8. 计算机数值分析为什么那么难,数值分析方法
  9. WPF 框架开发 ColumnDefinition 和 RowDefinition 的代码在哪
  10. Windows环境搭建Red5流媒体服务器指南
  11. ORACLE安装之环境搭建
  12. dbv连oracle,oracle工具:DBV的用法
  13. 学术会议 Rebuttal 模板
  14. js打印window.print()图片打印
  15. python can总线_MicroPython教程之TPYBoard v102 CAN总线通信
  16. “烤面经了“~2022最新大厂Java面试真题总结,可带劲了
  17. mysql属于dbms还是dbs_DB、DBMS和DBS三者之间有什么关系_数据库
  18. 基于PYNQ的AD采集系统
  19. 宝宝出生需要的相关资料
  20. Java8新特性1:lambda表达式入门--由浅入深,从单发步枪迈向自动步枪

热门文章

  1. 森鹰窗业通过创业板注册:年营收9.57亿 应收账款达2.7亿
  2. JavaScript面试题,let和var的区别,let和const是什么意思?
  3. 特征提取(三)SURF算法详解
  4. Android 各版本关闭 Selinux 的方法
  5. Mac OS X Mavericks使用手册
  6. java map comparator,Java TreeMap comparator()方法
  7. 比较器Comparator使用
  8. 数字化转型与公司淘汰
  9. css表格中怎么设置表格间距,css如何设置表格间距
  10. node.js基础了解