微信开发,在MsgController中无法写入Cookie?

先放代码:

//微信消息
public class WxMsgController extends MsgControllerAdapter {
    /**
     * 微信公众号菜单点击事件
     */
    @Override
    protected void processInMenuEvent(InMenuEvent inMenuEvent) {
        //获取OpenId
        String openId = inMenuEvent.getFromUserName();
        //测试写入Cookie
        Cookie cookie = new Cookie("openId", openId);
        cookie.setPath("/");
        cookie.setMaxAge(24 * 60 * 60);
        getResponse().addCookie(cookie);
        System.out.println("cookie:" + cookie.getValue());
        //返回空消息
        renderNull();
    }
}
//微信中打开页面的Action
Cookie[] cookies = getRequest().getCookies();
System.out.println("Controller cookies:" + cookies.length);

第一段代码的用处是在用户点击菜单时将openId存入cookie

第二段代码是另一个Controller中打印刚刚存入的cookie

却每次都显示0,就是说第一段代码未成功将cookie存入

but,换到浏览器环境就可以成功,说明存入cookie部分的代码没问题

头昏脑胀

评论区

netwild

2017-06-21 16:42

大神快现身 @JFInal @dreamlu

JFinal

2017-06-21 16:52

@netwild 你确定微信端支持了 cookie ?

netwild

2017-06-21 17:08

@JFinal 支持的,我把那段测试代码写到普通的Controller里就可以成功,但是在MsgController里却无法写入

netwild

2017-06-22 06:56

明白了,MsgController接收到的消息应该是微信服务器Post过来的,并不会Flush到用户,所以就不能把cookie写到用户端

JFinal

2017-06-22 11:32

@netwild 是这么个道理

热门反馈

扫码入社