packagecom.payroll.wx.servlet;importjava.io.IOException;importjava.io.PrintWriter;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importnet.sf.json.JSONObject;importcom.payroll.wx.util.CommendDef;importcom.payroll.wx.util.HttpsGetUtil;/*** Oauth2Servlet
*
*@authoradmin
* @date 2015-2-27 下午04:32:55*/
public class Oauth2Servlet extendsHttpServlet {private static final long serialVersionUID = 1L;/*** snsapi_userinfo为scope发起的网页授权
* 是用来获取用户的基本信息的。但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。*/
public voiddoGet(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {
String get_access_token_url= "https://api.weixin.qq.com/sns/oauth2/access_token?"
+ "appid="
+CommendDef.AppId+ "&secret="
+CommendDef.AppSecret+ "&code=CODE&grant_type=authorization_code";
String get_userinfo= "https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN";//将请求、响应的编码均设置为UTF-8(防止中文乱码)
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
String code= request.getParameter("code");
System.out.println("******************code=" +code);
get_access_token_url= get_access_token_url.replace("CODE", code);
String json=HttpsGetUtil.doHttpsGetJson(get_access_token_url);
JSONObject jsonObject=JSONObject.fromObject(json);
String access_token= jsonObject.getString("access_token");
String openid= jsonObject.getString("openid");
get_userinfo= get_userinfo.replace("ACCESS_TOKEN", access_token);
get_userinfo= get_userinfo.replace("OPENID", openid);
String userInfoJson=HttpsGetUtil.doHttpsGetJson(get_userinfo);
JSONObject userInfoJO=JSONObject.fromObject(userInfoJson);
String user_openid= userInfoJO.getString("openid");
String user_nickname= userInfoJO.getString("nickname");
String user_sex= userInfoJO.getString("sex");
String user_province= userInfoJO.getString("province");
String user_city= userInfoJO.getString("city");
String user_country= userInfoJO.getString("country");
String user_headimgurl= userInfoJO.getString("headimgurl");//UserInfo_weixin userInfo=new UserInfo_weixin(user_openid,
response.setContentType("text/html; charset=utf-8");
PrintWriter out=response.getWriter();
out.println(""-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("");
out.println("
A Servlet");out.println("
");out.print(" This is ");
out.print(this.getClass());
out.println(", using the POST method \n");
out.println("openid:" + user_openid + "\n\n");
out.println("nickname:" + user_nickname + "\n\n");
out.println("sex:" + user_sex + "\n\n");
out.println("province:" + user_province + "\n\n");
out.println("city:" + user_city + "\n\n");
out.println("country:" + user_country + "\n\n");
out.println("
out.println(">");
out.println(" ");
out.println("");
out.flush();
out.close();
}
}