没什么技术含量的一个小软件,用HttpClient登陆某正方系统后读取指定页面然后解析呈现。可以查分数和课表。
如果有和我一个学校的,那真是缘分了。
严重依赖页面的VIEWSTATE,虽然不知道这是啥,理论上应该自动解析出来的,偷懒就成了硬编码。
[1].[代码] [Java]代码 跳至 [1] [2]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | protectedvoid onPostExecute(String result) { if(result.equals("FAIL")) { dialog.dismiss(); newAlertDialog.Builder(ScoreActivity.this).setTitle("错误") .setMessage("无法连接服务器").setPositiveButton("确定",null) .show(); }elseif (result.equals("") || result == null || result.length() == 0) { dialog.dismiss(); newAlertDialog.Builder(ScoreActivity.this).setTitle("错误") .setMessage("网络错误").setPositiveButton("确定",null) .show(); }elseif (result.indexOf("系统警告") != -1) { dialog.dismiss(); Toast.makeText(ScoreActivity.this,"系统警告,你懂的", Toast.LENGTH_LONG).show(); }elseif (result != null) { dialog.dismiss(); Toast.makeText(ScoreActivity.this,"查询成功", Toast.LENGTH_SHORT) .show(); Log.d(TAG,"GetOK"); Log.d(TAG, ScoreActivity.this.SCORE_PAGE); Pattern pattern = Pattern.compile(PATTERN); Matcher matcher = pattern.matcher(result); while(matcher.find()) { String str_year = matcher.group(1); String str_term = matcher.group(2); String str_name = matcher.group(3); String str_type = matcher.group(4); String str_teacher = matcher.group(5); String str_test = matcher.group(6); String str_score = matcher.group(7); String str_MKEscore = matcher.group(8); if(str_MKEscore.equals(" ")) str_MKEscore = "无"; String str_rescore = matcher.group(9); if(str_rescore.equals(" ")) str_rescore = "无"; String str_credit = matcher.group(11); year.add(str_year); term.add(str_term); name.add(str_name); type.add(str_type); teacher.add(str_teacher); test.add(str_test); score.add(str_score); MKEscore.add(str_MKEscore); rescore.add(str_rescore); credit.add(str_credit); } for(inti = 0; i < year.size(); ++i) { Map<String, String> tmp = newHashMap<String, String>(); tmp.put("year", year.get(i)); tmp.put("term", term.get(i)); tmp.put("name", name.get(i)); tmp.put("type", type.get(i)); tmp.put("teacher", teacher.get(i)); tmp.put("test", test.get(i)); tmp.put("score", score.get(i)); tmp.put("MKEscore", MKEscore.get(i)); tmp.put("rescore", rescore.get(i)); tmp.put("credit", credit.get(i)); ITEM_INFO.add(tmp); } SimpleAdapter adapter = newSimpleAdapter(ScoreActivity.this, ITEM_INFO, R.layout.score_item_layout, FROM, TO); lv_score.setAdapter(adapter); } } |