问答详情
源自:5-4 消息的接收与响应2

一切测试正常,回复该公众号暂时无法提供服务,请稍后再试


@RequestMapping(value = "/wx" , method = RequestMethod.POST)
    public void  message(HttpServletRequest request , HttpServletResponse response) throws Exception{
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        PrintWriter out = response.getWriter();
        try {
            Map<String, String> map = MessageUtil.XMLToMap(request);
            String FromUserName = map.get("FromUserName");
            String toUserName = map.get("ToUserName");
            String MsgType = map.get("MsgType");
            String Content = map.get("Content");
            
            String message = null;
            if(MsgType.equals("text")){
                TextMessage text = new TextMessage();
                text.setContent("the message is:"+Content);
                text.setCreatTime(new Date().getTime()+"");
                text.setFromUserName(toUserName);
                text.setToUserName(FromUserName);
                text.setMsgType("text");
                message = MessageUtil.textMessageToXML(text);
            }
            System.out.println(message);
            out.print(message);
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
        finally{
            out.close();
        }

    }

提问者:w_y_f_ 2015-07-21 17:15

个回答

  • 慕妹9319559
    2015-07-27 16:10:34
    已采纳

    <xml>
    <ToUserName><![CDATA[toUser]]></ToUserName>
    <FromUserName><![CDATA[fromUser]]></FromUserName>
    <CreateTime>1348831860</CreateTime>
    <MsgType><![CDATA[text]]></MsgType>
    <Content><![CDATA[this is a test]]></Content>
    <MsgId>1234567890123456</MsgId>
    </xml>

    和微信提供的相比少了一行:<MsgId>1234567890123456</MsgId>

    然后格式问题就不造了

  • qq__触不可及_0
    2017-07-29 10:51:11

    这问题一年了还没人解决。。。。

  • giscafer
    2015-10-06 16:03:36

    测试时不行,应该是http://www.tunnel.mobi/映射问题吧。有空再放到SAE或者BAE看看吧

  • 慕标3080370
    2015-09-20 17:01:05

    请问楼主解决了吗?我也是同样问题……

  • 慕妹9319559
    2015-07-27 16:14:04

    String FromUserName = map.get("FromUserName");
                String toUserName = map.get("ToUserName");两个的位置调换一下就好了

  • 慕妹9319559
    2015-07-27 16:13:06

    http://www.imooc.com/qadetail/79983这个问答解决了问题的,你可以试试,只要求将两个顺序调换就好了

  • w_y_f_
    2015-07-21 17:22:13

    求解啊


  • w_y_f_
    2015-07-21 17:16:56

    控制台打印<xml>
      <ToUserName>o9NXrw-dOGbB1AQd-iNADqOMlsg8</ToUserName>
      <FromUserName>gh_93507f716d68</FromUserName>
      <CreatTime>1437469274777</CreatTime>
      <MsgType>text</MsgType>
      <Content>the message is:wwwww</Content>
    </xml>