由于网站现在已经改为登录账号才能查询成绩了,所以做不了具体的解释,查询是无需验证码破解的,知道链接,参数,设置好请求头,即可查询成绩,以下代码仍可运行进行查询。
/**
* @author :万土霖
* @date :Created in 2022/3/15 12:10
* @description:四六级查询
* @modified By:
* @version:
*/
public class CetQuery {
//四级网址
public static final String CET4_URL="http://cache.neea.edu.cn/api/latest/results/cet?e=";
//六级网址
public static final String CET6_URL="http://cache.neea.edu.cn/api/latest/results/cet?e=";
public static final String E = "CET_202112_DANGCI";
public static final String CET4_KM = "1";
public static final String CET6_KM = "2";
//结果列表
static List<String> res=new ArrayList<>();
/**
* @Author 万土霖
* @Description //TODO 拼接链接,查询六级或者四级成绩
* @Date 16:39 2022/3/15
* @Param [name, sfz]
* @return void
*/
static void query(String name ,String sfz ) throws IOException {
String xm = name;
String no = sfz;
// 拼接url
String cet4url = CET4_URL + E + "&km=" + CET4_KM + "&xm=" + xm + "&no=" + no + "&v=";
String cet6url = CET6_URL + E + "&km=" + CET6_KM + "&xm=" + xm + "&no=" + no + "&v=";
String cet4res=inquiry(cet4url);
if (cet4res==null||cet4res.equals("")){
String cet6res=inquiry(cet6url);
if (cet6res==null||cet6res.equals("")) {
return;
}
else{
res.add(cet6res);
}
}else{
res.add(cet4res);
}
}
/**
* @Author 万土霖
* @Description //TODO 发送http请求查询成绩
* @Date 16:39 2022/3/15
* @Param [url]
* @return java.lang.String
*/
static String inquiry(String url) throws IOException {
// 获得一个httpclient对象
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpGet httpget = new HttpGet(url);
CloseableHttpResponse response = null;
// 设置请求头
httpget.addHeader("Referer", "http://cet.neea.edu.cn/");
response = httpclient.execute(httpget);
if (response.getStatusLine().getStatusCode() == 200) {
String resultString = EntityUtils.toString(response.getEntity(), "UTF-8");
return print(resultString);
}
return null;
}
/**
* @Author 万土霖
* @Description //TODO 四六级结果数据解析
* @Date 16:38 2022/3/15
* @Param [string]
* @return java.lang.String
*/
static String print(String string){
Map<String, Object> map = new LinkedHashMap<>();
// 把Json数据转为map
HashMap hashMap = JSON.parseObject(string, HashMap.class);
if (hashMap.containsKey("score")) {
map.put("姓名",hashMap.get("xm"));
if (hashMap.get("km").toString().equals(CET4_KM)) {
map.put("等级", "四级");
}
else {
map.put("等级", "六级");
}
map.put("成绩", hashMap.get("score"));
map.put("听力", hashMap.get("sco_lc"));
map.put("阅读", hashMap.get("sco_rd"));
map.put("写作", hashMap.get("sco_wt"));
//口语成绩
if (hashMap.get("ky_sco")!=null&&!hashMap.get("ky_sco").equals("--")) {
map.put("口语", hashMap.get("ky_sco"));
}
String result = map.toString().replace("=",":").replace("-","");
if (Integer.parseInt(hashMap.get("score").toString())>=425) {
return result.substring(1, result.length() - 1) + " 通过";
}
return result.substring(1, result.length() - 1);
}
return null;
}
/*单文件输入,这里使用的是excel文件,文件的第三列是姓名,第四列是身份证号*/
static void file(HSSFWorkbook hssfWorkbook) {
try {
HSSFSheet sheet = hssfWorkbook.getSheetAt(0);
int maxRow = sheet.getLastRowNum();
//第一,二行是表头,从第三行开始
for (int row = 2; row <= maxRow; row++) {
//文件的第三列是姓名,第四列是身份证号
query(sheet.getRow(row).getCell(2).toString(), sheet.getRow(row).getCell(3).toString());
}
} catch (IOException e) {
e.printStackTrace();
}
}
//main方法
public static void main(String[] args) throws IOException {
HSSFWorkbook hssfWorkbook2 = new HSSFWorkbook(new FileInputStream("你的excel文件地址"));
file(hssfWorkbook2);
for(int i=0;i<res.size();i++){
System.out.println(res.get(i));
}
}
}