没什么技术含量的一个小软件,用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 | protected void onPostExecute(String result) { if (result.equals( "FAIL" )) { dialog.dismiss(); new AlertDialog.Builder(ScoreActivity. this ).setTitle( "错误" ) .setMessage( "无法连接服务器" ).setPositiveButton( "确定" , null ) .show(); } else if (result.equals( "" ) || result == null || result.length() == 0 ) { dialog.dismiss(); new AlertDialog.Builder(ScoreActivity. this ).setTitle( "错误" ) .setMessage( "网络错误" ).setPositiveButton( "确定" , null ) .show(); } else if (result.indexOf( "系统警告" ) != - 1 ) { dialog.dismiss(); Toast.makeText(ScoreActivity. this , "系统警告,你懂的" , Toast.LENGTH_LONG).show(); } else if (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 ( int i = 0 ; i < year.size(); ++i) { Map<String, String> tmp = new HashMap<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 = new SimpleAdapter(ScoreActivity. this , ITEM_INFO, R.layout.score_item_layout, FROM, TO); lv_score.setAdapter(adapter); } } |