【微信Java开发 --番外篇】错误解析

虽然在微信开发过程中,会有微信公众平台开发者文档中的《全局返回码》作为错误的参考对比;但是依旧的,会觉得有时候的问题莫名其妙。【注:本人使用weixin-java-tools进行开发】

下面吧微信开发过程中碰到的各种问题做一个归类【注:错误总结会在开发过程中一一补充】

 

一.自定义菜单---错误集合

1.创建自定义菜单{"errcode":40019,"errmsg":"invalid button key size hint: [a90WaA0296vr19]"}

错误代码:

 

 

十月 14, 2016 5:11:27 下午 org.apache.catalina.core.StandardContext loadOnStartup
严重: Servlet [rest] in web application [/wxFirst] threw load() exception
me.chanjar.weixin.common.exception.WxErrorException: {"errcode":40019,"errmsg":"invalid button key size hint: [a90WaA0296vr19]"}
    at me.chanjar.weixin.mp.api.impl.WxMpServiceImpl.executeInternal(WxMpServiceImpl.java:476)
    at me.chanjar.weixin.mp.api.impl.WxMpServiceImpl.execute(WxMpServiceImpl.java:425)
    at me.chanjar.weixin.mp.api.impl.WxMpServiceImpl.post(WxMpServiceImpl.java:414)
    at me.chanjar.weixin.mp.api.impl.WxMpMenuServiceImpl.menuCreate(WxMpMenuServiceImpl.java:35)
    at com.sxd.controller.CenterController.<init>(CenterController.java:97)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:147)
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:89)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1088)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1040)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:505)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:229)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:725)
    at org.spring

 

这种错误对应代码错误的位置:

WxMenuButton button3=new WxMenuButton();
            button3.setName("进入百度");
            button3.setType("click");
            button3.setUrl("http://www.baidu.com");  //URL类型的自定义按钮

 

错误分析:

发生这样的错误是因为,这个自定义菜单是用来做页面跳转的,即点击完了之后是要跳转到下一个页面的。所以:button3.setType("click");按钮的类型应该修改为button3.setType("view");

解决问题:

WxMenuButton button3=new WxMenuButton();
            button3.setName("进入百度");
            button3.setType("view");
            button3.setUrl("http://www.baidu.com");  //URL类型的自定义按钮

 

 

------------------------------------------------------------------------------------------------------redirect_url参数异常----------------------------------------------------------------------------------------------------------

二.点击公众号上按钮,报错redirect_url参数异常

微信公众号下面的按钮,点击之后,报错redirect_url参数异常。

 

查找原因的方法:

因为做微信公众号开发,只能在手机微信上进行访问,没有办法调试,所以如果想在手机上看到微信访问的地址和传输的数据有哪些,可以在手机上下载一个【无root抓包】

启动之后界面如下:

点击启动按钮,绿色的按钮,然后去微信访问

找到微信访问的包,可以在里面看到详细信息。

 

 

 

 

解决方法:

1.设置按钮的这个地方的appId和redirect_uri后面跟的地址,直接写死,在一定程度上能避免这个问题

这样的话,需要取消关注,重新关注这个公众号,让按钮重新初始化一次,就能解决

 private WxMenu createMenu()
  {
    WxMenu wxMenu = new WxMenu();

    WxMenuButton firstMenuButton = new WxMenuButton();
    firstMenuButton.setType("view");
    firstMenuButton.setName("个人中心");
    firstMenuButton.setKey("member");
    firstMenuButton.setUrl("https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + "wx40263796f5de033c" + "&redirect_uri=" + "http://weixin.myagen.cn/" + "wx/member/showAllMemberInfo.jhtml&&response_type=code&scope=snsapi_base&state=xxxx_state#wechat_redirect");
    WxMenuButton secondMenuButton = new WxMenuButton();
    secondMenuButton.setType("view");
    secondMenuButton.setName("订单");
    secondMenuButton.setKey("member");
    secondMenuButton.setUrl("https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + "wx40263796f5de033c" + "&redirect_uri=" + "http://weixin.myagen.cn/" + "wx/member/showAllMemberOrder.jhtml&&response_type=code&scope=snsapi_base&state=xxxx_state#wechat_redirect");

    WxMenuButton threeMenuButton = new WxMenuButton();
    threeMenuButton.setType("view");
    threeMenuButton.setName("报告");
    secondMenuButton.setKey("institution");
    threeMenuButton.setUrl("https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + "wx40263796f5de033c" + "&redirect_uri=" + "http://weixin.myagen.cn/" + "wx/member/memberReport.jhtml&&response_type=code&scope=snsapi_base&state=xxxx_state#wechat_redirect");

    List<WxMenuButton> firstMenuButtons = new ArrayList();
    firstMenuButtons.add(firstMenuButton);
    firstMenuButtons.add(secondMenuButton);
    firstMenuButtons.add(threeMenuButton);

    wxMenu.setButtons(firstMenuButtons);

    return wxMenu;
  }

View Code

2.除此之外,还会因为微信公众平台上  网页授权地址也需要更改

 

 

这个文件放置在你项目的根目录下  webRoot下面

 

 

 

 

 

 修改完成之后再去访问 就好了。

 

 

===========================================================================================================================

三。公众号初始化时候创建的自定义按钮,公众号上没有创建出来,捕捉之后发现错误码40164

 

错误码如下:

me.chanjar.weixin.common.exception.WxErrorException: {"errcode":40164,"errmsg":"invalid ip 113.139.190.118, not in whitelist hint: [fEjFNA0604e544]"}

 

解决方法:

是因为上面的IP地址,并没有添加到白名单中,导致按钮不能创建成功。

所以

可以在微信公众平台进入

修改,然后换行,将白名单填进去即可。

 

时间: 2024-10-23 20:52:20

【微信Java开发 --番外篇】错误解析的相关文章

think in java interview番外篇-谈程序员如何修练英语

一.程序员对英语能力的重视度和能力要求应该是在各行各业中排在比较靠前的 这样说吧,英语程度的好坏直接影响着一个程序员的编程.开发.创新能力. 道理很简单: 1. 计算机和软件是用英语创造出来的 2. 国内的技术普及度不怎么高,而最前沿最好最全的资料也往往是英语 3.你在读OpenSource的一些源码时,这些OpenSource也大都来源于英语 因此英语和技术对于一个程序员来说是各占50%这样的一个比重的,英语能力的好坏直接影响到一个程序员的技术能力. 说到这儿其实还是主要源于国内的技术普及度不

【微信Java开发 --1---番外1】在windows下,使用JAVA执行多条DOS命令+文件夹/路径中有空格怎么解决【目的是实现内容穿透外网】

内网穿透外网的那一篇,参正集1 但是每次都要Ctrl+R 启动DOS窗口,也就是CMD,一句一句的去粘,略显繁琐. 所以将这些任务写在JAVA程序中,启动一次程序就可以实现[内网穿透]的功能,多好啊!   首先把流程走一遍 1.D盘存放内网穿透工具 ,那就在D盘新建一个文件夹,用于存放bat文件的,起名字叫run cmd 2.在run cmd中新建一个文本文件   在新建的文本文件中粘贴如下的代码: echo d: cd ngrok_windows natapp -config ngrok.cf

iOS冰与火之歌(番外篇) - 基于PEGASUS(Trident三叉戟)的OS X 10.11.6本地提权

iOS冰与火之歌(番外篇)  基于PEGASUS(Trident三叉戟)的OS X 10.11.6本地提权 蒸米@阿里移动安全 0x00 序 这段时间最火的漏洞当属阿联酋的人权活动人士被apt攻击所使用的iOS PEGASUS(又称Trident三叉戟)0day漏洞了.为了修复该漏洞,苹果专门发布了一个iOS 9.3.5版本.这个漏洞的厉害之处在于可以直接从沙盒内对内核进行攻击(无需沙盒逃逸),并且同时影响iOS(9.3.4)和OS X (10.11.6).因此,本篇文章将会从PEGASUS漏洞

小白学数据分析-----&gt; 留存率是什么?(番外篇)

最近一个时期和很多的人进行了交流,收获了不少,也思考了不少,如今我们都能得到数据,如今我们也都能按照所谓的定义和框架分析问题,只是我觉得有时候不必要一定要一直站在框架内去分析一些问题,进步和前进的力量来自于质疑,并进行革新和再创造. 留存率这个数据指标不记得从何时起变得那么重要,重要到研发上把它作为游戏好坏的一个标准,运营商(平台)作为了一个准入的钥匙,是否值得继续下去.有时候觉得粗暴,甚至无知了有点.因为肤浅的百分比背后隐藏着更多的金子,也可能是垃圾. 以上算是一点吐槽,更多潜在的问题这里不想

云栖大会番外篇:四美齐亮相,邀你来云栖!

又是2016杭州・云栖大会吗?亲,你猜对了! 不过咱们是番外篇,这回不聊400场技术分论坛,也不聊马云又会有什么语惊四座的发言. 咱们聊一聊...妹纸!没错就是妹纸! 云栖大会上可不只有程序男哦--参会时有与百来个美女擦肩而过的机会哦. 不信--先给你们剧个透...看看我们美不美-- 不只是照片哦--要不要...看视频,想不想...接到我的来电   扫码点我们的头像,就能跟我们视频啦啦-- 看完记得分享哦--

微信接口开发之高级篇系列【网页授权获取用户基本信息】

PHP微信接口开发之高级篇之网页授权获取用户基本信息    二.WEB开发工具  

屌丝重披战袍 番外篇诚意回归

由优酷土豆集团跟万合天宜联合打造的网络神剧<报告老板!>将于4月10日推出番外篇,每周四在优酷土豆双平台同步的更新.值得一提的是,此次的番外篇剧集是因客户而设计的.凭借多年的自制剧经验,以及与优秀制作机构的良好合作,优酷土豆集团不仅仅在自制网剧上累积了优秀内容跟数亿的粉丝,更是在内容营销上积极的开拓,屡次打造了成功案例,领先行业. 屌丝重披战袍  番外篇诚意回归 <报告老板!>第一季落幕后,广大网友依依不舍.4月10日起,优酷.土豆双平台同步播出<报告老板!>番外篇,网

【微信Java开发 --2】接入微信公众平台开发,配置自己的服务器,验证过程【验证服务器、自定义菜单、微信端消息分发】

接入微信公众平台开发,开发者需要按照如下步骤完成: 1.填写服务器配置 2.验证服务器地址的有效性 3.依据接口文档实现业务逻辑 好我们就开始:1.登录微信公众平台,进入基本配置  修改配置,将自己的服务器的URL地址,配置在此处: 填写完成后,[先不用 提交],先进行第二步 服务器端代码的配置   注意: 如果想使用  自定义菜单等相关接口权限,需要注意:   可以看到  个人订阅号是没有 使用自定义菜单的相关接口能力的,如果需要使用的话,需要注册服务号或使用测试号:    那么 在服务器端代

UI自动化框架调研-番外篇

导语 前面写了两篇文章介绍了个人基于Macaca在UI自动化上的实践心得,那我们为什么会选择了Macaca呢,这篇文章将简单介绍一下我们选择Macaca的原因. 有哪些可用的UI自动化框架? 他们的区别在哪里? 我们是如何选择的? 条件1:支持移动端app自动化 从以上对比其实已经可以比较明确的帮助大家做出自己的选择,从我所在的团队来讲,我们主要做的是移动端的UI自动化,相信现在大多数同学所做的也都是这一类的自动化,因此,仅限于PC端webApplication的几个框架就不可避免的要排除掉了,