You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
hunjianghu/yanzheng/Yanzheng.java

135 lines
4.5 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package yanzheng;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import java.util.Map;
import java.util.Random;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.alibaba.fastjson.JSONObject;
@WebServlet("/Yanzheng")
public class Yanzheng extends HttpServlet {
private static final long serialVersionUID = 1L;
public Yanzheng() {
super();
// TODO Auto-generated constructor stub
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
public static String SendGET(String url,String param){
String result="";//访问返回结果
BufferedReader read=null;//读取访问结果
URL realurl=null;
URLConnection connection=null;
try {
//创建url
realurl=new URL(new StringBuffer(url).toString());
//打开连接
connection=realurl.openConnection();
// 设置通用的请求属性
connection.setRequestProperty("accept", "*/*");
connection.setRequestProperty("connection", "Keep-Alive");
connection.setRequestProperty("user-agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
//建立连接
connection.connect();
// 获取所有响应头字段
Map<String, List<String>> map = connection.getHeaderFields();
// 遍历所有的响应头字段获取到cookies等
for (String key : map.keySet()) {
System.out.println(key + "--->" + map.get(key));
}
// 定义 BufferedReader输入流来读取URL的响应
read = new BufferedReader(new InputStreamReader(
connection.getInputStream(),"UTF-8"));
String line;//循环读取
while ((line = read.readLine()) != null) {
result += line;
}
} catch (IOException e) {
e.printStackTrace();
}finally{
if(read!=null){//关闭流
try {
read.close();
} catch (IOException e) {
e.printStackTrace();
}
}
// if(connection != null) {
// connection.
// }
}
return result;
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setHeader("Content - Encoding","utf-8");
response.setContentType("text/json; charset=utf-8");
String code =request.getParameter("code");
StringBuffer url = new StringBuffer("https://api.weixin.qq.com/sns/jscode2session?");
url.append("appid=wxdc9f23490d56599c");
url.append("&secret=c39052978a3e80d55ff53227013384ce");
url.append("&js_code="); url.append(code);
url.append("&grant_type=authorization_code");
String finalURL = url.toString();
String res = SendGET(finalURL, "");
JSONObject json = JSONObject.parseObject(res);
System.out.println(json.toString());
int errcode = json.getIntValue("errcode");
PrintWriter out = response.getWriter();
JSONObject toxcx = new JSONObject();
if(errcode == 0) {
String openid = json.getString("openid");
String session_key = json.getString("session_key");
//插入数据库中还没做
String str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
Random random=new Random();
StringBuffer sb=new StringBuffer();
for(int i=0;i<20;i++){
int number=random.nextInt(62);
sb.append(str.charAt(number));
}
toxcx.put("errcode","成功");
toxcx.put("verification",sb.toString());
out.println(toxcx.toString());
out.flush();
}
else if(errcode == -1) { // 系统繁忙,此时请开发者稍候再试
toxcx.put("errcode","-1 系统繁忙,请稍候再试");
out.println(toxcx.toString());
out.flush();
}
else if(errcode == 40029) { // code 无效
toxcx.put("errcode","40029 code无效");
out.println(toxcx.toString());
out.flush();
}
else if(errcode == 45011){ //频率限制每个用户每分钟100次
toxcx.put("errcode","45011 操作过于频繁");
out.println(toxcx.toString());
out.flush();
}
}
}