微信公众平台

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

调用接口

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. Windows Embedded Compact 7网络编程概述(上)
  2. 第一次使用考试宝进行作业练习
  3. Oracle数据库的关闭详解
  4. Flutter web问题:Failed to load network image
  5. 快速安装Git客户端及TortoiseGit并使用
  6. 以某一用户名和密码 登录请求脚本_linux expect自动交互脚本
  7. 只在堆上或只在栈上定义对象
  8. [USACO12FEB]牛的IDCow IDs
  9. Hibernate Collection乐观锁定
  10. Java Math类的常用方法
  11. Javascript 中 Array.push 要比 Array.concat 快 945 倍
  12. 在Android 8.0之后版本上添加Hidl Service
  13. 请求帮助--访问被拒绝:“Interop.jmail”
  14. JavaScript全套视频教程
  15. 电脑内录录音软件,可选择录音来源
  16. ITextSharp 使用
  17. linux pl2303 驱动下载,ubuntu装pl2303USB转串口驱动(详细,亲测)
  18. 误码率matlab怎么计算,PSK理论误码率与实际误码率MATLAB仿真程序(最新整理)
  19. 计算机体系结构-第五章-指令级并行
  20. MOOC中国大学自动评分js脚本

热门文章

  1. 获取自己手机的电话号码
  2. 【鲁班学院】设计模式—访问者(Visitor)模式
  3. SqlServer数据库远程链接失败问题
  4. 姿态解算基础知识(一)
  5. 计算机科学与技术U盘,存储设备U盘及硬盘
  6. python如何使用gpu_如何使用GPU加速numpy运算
  7. 【Java基础·Comparator多字段排序】
  8. python里面的内置函数_【python】函数之内置函数
  9. 2021年上海市人口分布数据
  10. 解决Cocos2d-x编译错误: 无法打开 源 文件 extensions/ExtensionExport.h