上传图片,需要media_id,从上传临时素材获取:https://work.weixin.qq.com/api/doc#10112

https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE

参数 :

  • access_token :调用接口凭证
  • type :媒体文件类型,分别有图片(image)、语音(voice)、视频(video),普通文件(file)

1.封装image

#java
package date811; import java.util.Map; public class WXTextImage {
/**
* {
* "touser" : "UserID1|UserID2|UserID3",
* "toparty" : "PartyID1|PartyID2",
* "totag" : "TagID1 | TagID2",
* "msgtype" : "image",
* "agentid" : 1,
* "image" : {
* "media_id" : "MEDIA_ID"
* },
* "safe":0
* }
*/
private String touser;
private String toparty;
private String totag;
private String msgtype;
private Integer agentid;
private Map<String,String> image;
private Integer safe; public String getTouser() {
return touser;
} public void setTouser(String touser) {
this.touser = touser;
} public String getToparty() {
return toparty;
} public void setToparty(String toparty) {
this.toparty = toparty;
} public String getTotag() {
return totag;
} public void setTotag(String totag) {
this.totag = totag;
} public String getMsgtype() {
return msgtype;
} public void setMsgtype(String msgtype) {
this.msgtype = msgtype;
} public Integer getAgentid() {
return agentid;
} public void setAgentid(Integer agentid) {
this.agentid = agentid;
} public Map<String, String> getImage() {
return image;
} public void setImage(Map<String, String> image) {
this.image = image;
} public Integer getSafe() {
return safe;
} public void setSafe(Integer safe) {
this.safe = safe;
}
}

2.在公共类中获取media_id

#java
package date811; import io.restassured.response.Response;
import org.testng.annotations.Test; import java.io.File; import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertThat;
import static io.restassured.RestAssured.given; public class WXUtil {
/*
公共类
*/
private static String corpID = "xxx";
private static String corpSecret = "xxxxx";
private static String tokenURL = "https://qyapi.weixin.qq.com/cgi-bin/gettoken";
//获取access_token的方法
public static String getToken(){
Response res = given().param("corpid",corpID).
param("corpsecret",corpSecret).get(tokenURL).prettyPeek();
String token_text = res.getBody().jsonPath().getString("access_token");
assertNotNull(token_text);
return token_text;
}
//获取media_id
private static String uploadURL = "https://qyapi.weixin.qq.com/cgi-bin/media/upload";
public static String getMedia(){
String token = getToken();
Response res = given().queryParam("access_token",token)
.queryParam("type","image")
.multiPart("media",new File("image/粘贴图片.png"))
.post(uploadURL).prettyPeek();
String mediaId = res.getBody().jsonPath().getString("media_id");
assertNotNull(mediaId);
return mediaId;
} }

3.执行类

#java
package date811;
import io.restassured.RestAssured.*;
import io.restassured.http.ContentType;
import io.restassured.matcher.RestAssuredMatchers.*;
import io.restassured.response.Response;
import org.hamcrest.Matchers.*;
import org.testng.annotations.Test; import java.util.HashMap;
import java.util.Map; import static io.restassured.RestAssured.given;
import static io.restassured.RestAssured.useRelaxedHTTPSValidation;
import static org.hamcrest.Matchers.equalTo;
//assertThat方法一定要静态导入
import static org.hamcrest.Matchers.notNullValue;
import static org.junit.Assert.assertThat;
public class GetToken {
@Test
public void post_message() {
String token_text = WXUtil.getToken();
String postURL = "https://qyapi.weixin.qq.com/cgi-bin/message/send";
WXTextImage wx = new WXTextImage();
wx.setAgentid(0);
wx.setSafe(0);
wx.setToparty("0");
wx.setMsgtype("image");
Map<String,String> text = new HashMap<>();
text.put("media_id",WXUtil.getMedia());
wx.setImage(text);
given().contentType(ContentType.JSON)
.body(wx)
.queryParam("access_token",token_text)
.post(postURL).prettyPrint()
}
}

REST-assured 3发送图片的更多相关文章

  1. [Asp.net 开发系列之SignalR篇]专题四:使用SignalR实现发送图片

    一.引言 在前一篇博文已经介绍了如何使用SignalR来实现聊天室的功能,在这篇文章中,将实现如何使用SignalR来实现发送图片的功能. 二.实现发送图片的思路 我还是按照之前的方式来讲述这篇文章, ...

  2. weChat聊天发送图片带有小尖角的实现

    weChat聊天发送图片带有小尖角的实现 1.#import <UIKit/UIKit.h>2.3.@interface JKShapeImage : UIView4.5.@propert ...

  3. 在类似qq或者微信聊天中。如何根据不同的手机发送图片

    原文:在类似qq或者微信聊天中.如何根据不同的手机发送图片   前一段时间,公司自己要求做多客服开发,但是对于发送图片这一块,当时很苦恼,我用自己的手机(米2)测试,不管是本地,还是云相册,最新照片. ...

  4. 微信PC客户端无法发送图片,怎么解决?

    今天登陆电脑的微信客户端,无法发送截图图片,该怎么办? 解决方法 1.在任务栏找到程序,右键找到设置

  5. 【小梅哥FPGA进阶教程】串口发送图片数据到SRAM在TFT屏上显示

    十五.串口发送图片数据到SRAM在TFT屏上显示 之前分享过rom存储图片数据在TFT屏上显示,该方法只能显示小点的图片,如果想显示TFT屏幕大小的图片上述方法rom内存大小不够.小梅哥给了个方案,利 ...

  6. python使用post请求发送图片并接受图片

    图像读取编码与反编码: import requests import json import numpy as np import cv2 import base64 # 首先将图片读入 # 由于要发 ...

  7. IM聊天教程:发送图片/视频/语音/表情

    经常有朋友问起,如何在IM即时通讯中实现发送图片.视频.语音和表情? 为此,小编特意写了一个vue版本的Demo,实现了图片视频文件和表情的的发送,参考这个Demo源代码,相信你就可以轻松的用Unia ...

  8. ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(三) 之 实现单聊,群聊,发送图片,文件。

    上篇讲解了如何搭建聊天服务器,以及客户端js怎么和layui的语法配合.服务器已经连接上了,那么聊天还会远吗? 进入正题,正如上一篇提到的我们用 Client.Group(groupId)的方法向客户 ...

  9. C# socket 发送图片和文件

    先说服务端:界面:如图: 界面设计源码 namespace SocketJPGToTxt { partial class Form1 { /// <summary> /// 必需的设计器变 ...

  10. php://input解决APP发送图片问题

    今天公司要求用APP发送一个图片到PHP程序接收并保存起来,而且中间还需要很多参数! 以前没有做过APP和PHP交互,这次算是一个挑战吧(对一个没有人指导实习生来说) 1.APP发1.jpg,而且带有 ...

随机推荐

  1. Spring学习笔记之各个包的作用

    (1) spring-core.jar 这个jar文件包含Spring框架基本的核心工具类,Spring其它组件要都要使用到这个包里的类,是其它组件的基本核心,当然你也可以在自己的应用系统中使用这些工 ...

  2. DevExpress v17.2新版亮点—WinForms篇(三)

    用户界面套包DevExpress v17.2终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.开篇介绍了DevExpress WinForms v17.2 Data Grid Control ...

  3. docker中的安全机制

    有时候我们需要容器具有更多的权限,像如操作内核模块,控制swap交换分区,挂载usb磁盘,修改mac地址等.所以我们今天进行docker的安全设定. 一.使用docker命令设置docker的安全机制 ...

  4. MyEclipse 10 中安装Android ADT 22插件的方法

    MyEclipse 10 中安装Android ADT 22插件的方法 下载ADT包:http://dl.google.com/android/ADT-22.0.0.zip 将ADT-22.0.0.z ...

  5. vue-cli 添加到生产环境问题总结

    1. 路径问题  部署到生产环境后的实际链接为:   服务器项目路径 + serviceUrl的路径  创建 GlobalConstant.js  分别配置 开发环境和生产环境的 路径  (注:此处生 ...

  6. L2-009. 抢红包

    没有人没抢过红包吧…… 这里给出N个人之间互相发红包.抢红包的记录,请你统计一下他们抢红包的收获. 输入格式: 输入第一行给出一个正整数N(<= 104),即参与发红包和抢红包的总人数,则这些人 ...

  7. 微信小程序代码片段

    微信小程序代码片段是一种可分享的小项目,可用于分享小程序和小游戏的开发经验.展示组件和 API 的使用.复现开发问题等等.分享代码片段会得到一个链接,所有拥有此分享链接的人可以在工具中导入此代码片段. ...

  8. 日志的处理 —— 使用 log4j

    通过 log4j,日志信息不仅打印到 console,而且输出到指定文件,根据配置信息: <dependency> <groupId>log4j</groupId> ...

  9. HDU 1814 模板题 2-sat

    敲模板做的,不知道怎么就对了,注意一下建边即可··· 贴代码: #include<cstdio> #include<vector> using namespace std; # ...

  10. 解决:VS2010 调试器无法继续继续运行该进程,无法启动调试

    工具栏上突然出现 Model Project选项插件,在调试项目的时候突然出现错误: 按照网上的一些方法弄了后还是同样报错,把本地代码删除后从库上重现拉下来的项目依然报错,到这里就明白不是项目本身问题 ...