问题
最近在做微信公众号的开发(前端后台都有),所以更新系列博文就得推迟了,不过遇到的一些问题还是可以跟大家分享一下,以免大家以后需要用到的时候跟我一样踩坑。
像今天,我在微信公众号的后台-接口权限中看我的权限(个人号),看到个人号有个永久素材管理接口的权限,就想着拿这个接口来做点什么。
那我拿到这个接口的第一件事,我肯定是先尝试获取素材列表啦~微信开放文档的使用说明如下:
于是我马上上手调试:
HashMap<String, String> map = new HashMap<>();
map.put("type", ”news“);
map.put("offset", "0");
map.put("count", "20");
HttpResult httpResult = HttpUtil.ofPost("https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=" + wxBase.getAccessToken().getData(), map);
文档中说到的,需要用 https 的协议,然后需要用到 ACCESS_TOKEN 的字段(关于 access_token 的获取我前面已经有一篇关于公众号开发的博文有说明了,此处不再赘述,而且要确保获取 access_token 的机器访问 ip 在你之前配置的 IP 白名单中)。
好了,看着像没啥问题了,我按照官方的说明,用 post 的方式将封装了所需具备的几个参数的 map 去做列表请求,但是调试的结果是:
{errcode":40004,"errmsg":"invalid media type hint:"}
跟我标题中提到的那样,无论换什么 type 都会提示这个错误。
解决方案
没办法了,思考了一下,http 的参数有键值对和 json 的方式来传递,在前面做微信开发的时候,它们有用到了 xml 以及 json , 那我用 json 试一下?
HttpResult httpResult = HttpUtil.ofPost("https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=" + wxBase.getAccessToken().getData(), JSON.toJSONString(map));
项目中有用到了 fastjson,我用 fastjson 把原本的 map 对象转成 json 字符串试一下,果然功夫不负有心人啊~
问题解决,访问的图片此处就不贴出来了,大家如果遇到的话可以尝试一下~
By the way
有问题?可以给我留言或私聊
有收获?那就顺手点个赞呗~
当然,也可以到我的公众号下「6曦轩」,
回复“学习”,即可领取一份
【Java工程师进阶架构师的视频教程】~
回复“面试”,可以获得:
【本人呕心沥血整理的 Java 面试题】
回复“MySQL脑图”,可以获得
【MySQL 知识点梳理高清脑图】
曦轩我是科班出身的程序员,php,Android以及硬件方面都做过,不过最后还是选择专注于做 Java,所以有啥问题可以到公众号提问讨论(技术情感倾诉都可以哈哈哈),看到的话会尽快回复,希望可以跟大家共同学习进步,关于服务端架构,Java 核心知识解析,职业生涯,面试总结等文章会不定期坚持推送输出,欢迎大家关注~~~
近期会通过面试问答的形式为大家推送面试相关的知识,如果有什么建议可以在公众号留言~