求大神指导为啥微信公众平台自动回复乱码啊,我用springmvc做的以前好好的突然乱码了。
lina酱 2014-12-03 02:45:28 具体代码如下,本人新手啊,,,跪求解决
// 验证url
@RequestMapping("/url")
public String url(HttpServletResponse response,
HttpServletRequest request) throws Exception {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
System.out.println("----");
//验证
String echostr = request.getParameter("echostr");
String sb = "";
//验证请求是否来自微信服务器
if (XmlUtil.checkSignature(request,cs.getConfig().getToken())) {
if(!"".equals(echostr) && null!=echostr){
sb = echostr;
}else{
Map<String, String> map = XmlUtil.getXml(request);
public String ControlSkip(Map<String, String> map) throws Exception {
// TODO Auto-generated method stub
Config config = cs.getConfig();
System.out.println("用户发送xml"+map);
String Msgtype = map.get("xml.MsgType").toString();
StringBuffer sb = new StringBuffer();
if("text".equals(Msgtype)){
//执行天气预报
if(map.get("xml.Content").contains("天气") && StringUtils.isNotBlank(map.get("xml.Content").replace("天气", ""))){
sb.append(qs.getWeather(map));
}else{
//执行字符串处理方法
sb.append(qs.reply(map,""));
}
}else if("location".equals(Msgtype)){
//执行地址处理方法
List<News> news = ds.getNewsInfo(map.get("xml.Location_X"),map.get("xml.Location_Y"));
String xmlstr = ConvertXml.getNewsXml(map.get("xml.FromUserName"), map.get("xml.ToUserName"), map.get("xml.CreateTime"), news.size()+"", news,config.getUrl());
sb.append(xmlstr);
}else if("voice".equals(Msgtype)){
//执行语音处理方法
String xmlstr = ConvertXml.getTextXml(map.get("xml.FromUserName"), map.get("xml.ToUserName"), map.get("xml.CreateTime"), "对不起,语音功能还在开发中,敬请期待", map.get("xml.MsgId"));
sb.append(xmlstr);
}else if("event".equals(Msgtype)){
String event = map.get("xml.Event").toString();
if("subscribe".equals(event)){
//执行关注处理方法
sb.append(ss.SubscribeR(map));
}
if("CLICK".equals(event)){
//自定义菜单点击事件
sb.append(ws.findInfoByClick(map));
}
}
return sb.toString();
}
sb = ws.ControlSkip(map);
}
}
System.out.println("微信接收"+sb);
System.out.println("111111111111");
out.print("<script language='javascript>");
out.print("alert(sb);");
out.print("</scrpit>");
out.print(sb);
out.print("daw");
out.flush();
out.close();
return null;
}
}
// TODO Auto-generated method stub
Config config = cs.getConfig();
Subscribe sub = this.findById(1);
String xmlstr="";
if(0 == sub.getReplyType()){
xmlstr = ConvertXml.getTextXml(map.get("xml.FromUserName"), map.get("xml.ToUserName"), map.get("xml.CreateTime"),sub.getContent(), map.get("xml.MsgId"));
}else if(1 == sub.getReplyType()){
List<News> lst = new ArrayList<News>();
News news = new News();
news.setPicUrl(config.getUrl()+"/upload/subscribe/"+sub.getImageUrl());
news.setTitle(sub.getImageTitle());
news.setContext(sub.getJcontent());
news.setSource("subscribe");
news.setUrl(config.getUrl());
lst.add(news);
xmlstr = ConvertXml.getNewsXml(map.get("xml.FromUserName"), map.get("xml.ToUserName"), map.get("xml.CreateTime"), lst.size()+"", lst,config.getUrl());
}
return xmlstr;
}