通用方法
/**
* 取得参数串,形如name=xiaohei&age=18
* @param request
* @return
*/
public String getParamValuesStr(HttpServletRequest request){
StringBuilder sb = new StringBuilder();
Enumeration<String> parameterNames = request.getParameterNames();
while (parameterNames.hasMoreElements()) {
String name = (String) parameterNames.nextElement();
sb.append(name).append("=").append(request.getParameter(name));
if(parameterNames.hasMoreElements()){
sb.append("&");
}
}
return sb.toString();
}
@RequestMapping(value="index.html", method = { RequestMethod.POST, RequestMethod.GET })
public String index(HttpServletRequest request, HttpServletResponse response, ModelMap model){
//微信返回的openid
String oid = request.getParameter("oid");
//用户所传的需要跳转的url
String forward = request.getParameter("forward");
//用户所携带的参数
String params = getParamValuesStr(request);
if(StringUtils.isNoneBlank(oid) && StringUtils.isNoneBlank(forward)){
log.info("--------通用方法获取到的oid:"+oid);
log.info("--------需要跳转的页面:"+forward);
return "redirect:/"+forward+"?"+params;
}
String userAgent = request.getHeader("user-agent").toLowerCase();
if (userAgent.indexOf("micromessenger") > -1) {
// 重定向去获取oid的值
String state = "";
if(StringUtils.isNotBlank(params)){
state = user_name_openId + "#" + params;
}else{
state = user_name_openId;
}
try {
state = URLEncoder.encode(state, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
String weixinUrl = GET_OPENID_URLPATH + "&state=" + state + "#wechat_redirect";
log.info("微信跳转连接--->"+weixinUrl);
return "redirect:"+weixinUrl;
}
if(StringUtils.isNoneBlank(forward)){
return "redirect:/"+forward+"?"+params;
}else{
model.addAttribute("msg", "亲请传入forward参数作为跳转页面的依据哦!");
return WebSite.getWebAppTemplate("generalweChatcallback/error");
}
}