文档
获取不限制的小程序码
看腾讯写的文档,对于不同的程序员来说,可能接收到的信息会不一样,往往需要花很多时间来调试
目录
1、请求参数
2、发起请求
3、响应结果
1、请求参数
根据文档,可以将入参提取为一个简单java类
用到的第三方库:
lombok
jackson
package com.demo.utils.wechat.entity;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
/**
* 获取不限制的小程序码接口请求参数
*/
@Data
public class UnlimitedQRCodeParam {
/**
* 默认是主页,页面 page,例如 pages/index/index,
* 根路径前不要填加 /,不能携带参数(参数请放在scene字段里),
* 如果不填写这个字段,默认跳主页面。
*/
private String page;
/**
* 最大32个可见字符,只支持数字,大小写英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~,
* 其它字符请自行编码为合法字符(因不支持%,中文无法使用 urlencode 处理,请使用其他编码方式)
*/
private String scene;
/**
* 默认是true,检查page 是否存在,为 true 时 page 必须是已经发布的小程序存在的页面(否则报错);
* 为 false 时允许小程序未发布或者 page 不存在, 但page 有数量上限(60000个)请勿滥用。
*/
@JsonProperty("check_path")
private Boolean checkPath;
/**
* 否 要打开的小程序版本。
* 正式版为 "release",默认
* 体验版为 "trial"
* 开发版为 "develop"
*/
@JsonProperty("env_version")
private String envVersion;
/**
* 否 默认430,二维码的宽度,单位 px,最小 280px,最大 1280px
*/
private Integer width;
/**
* 自动配置线条颜色,如果颜色依然是黑色,则说明不建议配置主色调,默认 false
*/
@JsonProperty("auto_color")
private Boolean autoColor;
/**
* 默认是{"r":0,"g":0,"b":0} 。
* auto_color 为 false 时生效,使用 rgb 设置颜色
* 例如 {"r":"xxx","g":"xxx","b":"xxx"} 十进制表示
*/
@JsonProperty("line_color")
private LineColor lineColor;
/**
* 否 默认是false,是否需要透明底色,为 true 时,生成透明底色的小程序
*/
@JsonProperty("is_hyaline")
private Integer isHyaline;
}
package com.demo.utils.wechat.entity;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
@Data
public class LineColor {
@JsonProperty("r")
private Integer red;
@JsonProperty("g")
private Integer green;
@JsonProperty("b")
private Integer blue;
}
2、发起请求
请求时用 jackson 将参数序列化为json数据
发起请求时需要注意access_token 参数是查询参数形式传递,其他参数以json格式以body体形式传递
完整示例
POST https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=ACCESS_TOKEN
Content-Type: application/json
{
"page": "pages/index/index",
"scene": "a=1",
"check_path": true,
"env_version": "release"
}
3、响应结果
响应结果
package com.demo.utils.wechat.entity;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
@Data
public class UnlimitedQRCodeResult {
@JsonProperty("errcode")
private int errCode;
@JsonProperty("errmsg")
private String errMsg;
private String contentType;
private String buffer;
}
注意 这里需要注意:
文档上说返回值是json,实际操作下来会发现
如果调用成功,会直接返回图片二进制内容
如果请求失败,会返回 JSON 格式的数据
所以需要判断返回内容类型,根据contentType判断,
成功:如果是application/json就使用jackson解析,抛出异常
失败:如果是image/jpeg ,就使用byte[]接收二进制流
————————————————
版权声明:本文为CSDN博主「彭世瑜」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。