起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3544|回复: 1

[结贴] 接收微信公众号上传图片出错

[复制链接]

480

主题

1283

帖子

4476

积分

论坛元老

Rank: 8Rank: 8

积分
4476
QQ
发表于 2017-4-22 11:47:15 | 显示全部楼层 |阅读模式
版本: 小版本号:
数据库: MySQL 服务器操作系统: Windows 应用服务器: Tomcat
客户端操作系统: Windows 8 浏览器: Chrome
本帖最后由 davidhuang 于 2017-4-22 11:48 编辑

这是我后台处理微信公众号上传图片的代码,


        // 拦截图片消息
                private void addImageRouter() {
                                WxMpMessageHandler handler = new WxMpMessageHandler() {
                                                                @Override
                                        public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map<String, Object> context, WxMpService wxMpService, WxSessionManager sessionManager) throws WxErrorException {
                                                System.out.println("响应图片接受指令********************");
                                                //String mediaId = context.get("MediaId").toString();
                                                String mediaId = wxMessage.getMediaId();
                                                System.out.println("mediaId=" + mediaId );
                                                //取得mediaId后,可以立刻去下载,也可以先插入一条获取图片的表记录,然后定时去取
                                               
                                                try{
                                                File imageFile = wxMpService.mediaDownload(mediaId);
                                               
                                                System.out.println(imageFile.getPath());
                                                }catch(Exception ex1){
                                                         throw new RuntimeException(ex1.getMessage());
                                                       
                                                }
                                               
                                                WxMpXmlOutTextMessage m = WxMpXmlOutMessage.TEXT().content("图片上传成功。").fromUser(wxMessage.getToUserName()).toUser(wxMessage.getFromUserName()).build();
                                                return m;
                                        }
                                };
                                //wxMpMessageRouter.rule().async(false).content("test").handler(handler).end();
                               
                                wxMpMessageRouter.rule().async(false).msgType(WxConsts.CUSTOM_MSG_IMAGE).handler(handler).end();
                }




接收微信公众号上传的图片时候,后台报错如下


四月 22, 2017 11:42:30 上午 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet weixin default threw exception
java.lang.ArrayIndexOutOfBoundsException: 0
        at me.chanjar.weixin.common.util.http.MediaDownloadRequestExecutor.getFileName(MediaDownloadRequestExecutor.java:69)
        at me.chanjar.weixin.common.util.http.MediaDownloadRequestExecutor.execute(MediaDownloadRequestExecutor.java:57)
        at me.chanjar.weixin.common.util.http.MediaDownloadRequestExecutor.execute(MediaDownloadRequestExecutor.java:27)
        at file:///C:\Users\hyj\AppData\Local\Temp\%W@GJ$ACOF(TYDYECOKVDYB.pngme.chanjar.weixin.mp.api.WxMpServiceImpl.executeInternal(WxMpServiceImpl.java:578)
        at file:///C:\Users\hyj\AppData\Local\Temp\%W@GJ$ACOF(TYDYECOKVDYB.pngme.chanjar.weixin.mp.api.WxMpServiceImpl.execute(WxMpServiceImpl.java:548)
        at file:///C:\Users\hyj\AppData\Local\Temp\%W@GJ$ACOF(TYDYECOKVDYB.pngme.chanjar.weixin.mp.api.WxMpServiceImpl.mediaDownload(WxMpServiceImpl.java:243)
        at file:///C:\Users\hyj\AppData\Local\Temp\%W@GJ$ACOF(TYDYECOKVDYB.pngcom.justep.weixin.mp.WxMpServiceInstance$3.handle(WxMpServiceInstance.java:161)
        at file:///C:\Users\hyj\AppData\Local\Temp\%W@GJ$ACOF(TYDYECOKVDYB.pngme.chanjar.weixin.mp.api.WxMpMessageRouterRule.service(WxMpMessageRouterRule.java:252)
        at file:///C:\Users\hyj\AppData\Local\Temp\%W@GJ$ACOF(TYDYECOKVDYB.pngme.chanjar.weixin.mp.api.WxMpMessageRouter.route(WxMpMessageRouter.java:171)
        at file:///C:\Users\hyj\AppData\Local\Temp\%W@GJ$ACOF(TYDYECOKVDYB.pngcom.justep.weixin.mp.WxMpServiceInstance.doResponse(WxMpServiceInstance.java:222)
        at file:///C:\Users\hyj\AppData\Local\Temp\%W@GJ$ACOF(TYDYECOKVDYB.pngcom.justep.weixin.mp.DefaultServlet.service(DefaultServlet.java:17)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
        at file:///C:\Users\hyj\AppData\Local\Temp\%W@GJ$ACOF(TYDYECOKVDYB.pngorg.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
        at java.lang.Thread.run(Thread.java:745)


480

主题

1283

帖子

4476

积分

论坛元老

Rank: 8Rank: 8

积分
4476
QQ
 楼主| 发表于 2017-4-22 15:00:13 | 显示全部楼层
问题已经解决, 公众号有问题造成的, 请结帖
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-11-24 03:30 , Processed in 0.052479 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表