/** * @Author Benson * @Time 2013-11-28 */ package zjut.soft.finalwork.query; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.message.BasicNameValuePair; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import zjut.soft.finalwork.beans.TestArrangeCourse; import zjut.soft.finalwork.core.YCApplication; import zjut.soft.finalwork.util.Constant; import android.content.Context; public class StudentTestArrangementQuery implements TestArrangementQuery { @Override public List<TestArrangeCourse> getTestArrangementFirstTime(Context context) throws Exception { try { YCApplication app = (YCApplication) context.getApplicationContext(); String url = (String) app.get("selectedIp") + Constant.testArrangeQuery; HttpGet request = new HttpGet(url); HttpResponse response = app.getClient().execute(request); InputStream is = response.getEntity().getContent(); BufferedReader br = new BufferedReader(new InputStreamReader(is, Constant.ENCODING)); StringBuilder sb = new StringBuilder(); String temp = null; while ((temp = br.readLine()) != null) { sb.append(temp); System.out.println(temp); } List<TestArrangeCourse> courses = new ArrayList<TestArrangeCourse>(); Document doc = Jsoup.parse(sb.toString()); Elements table = doc.select("#DG_PTHasselect"); Elements trs = table.select("tr"); if(trs.size() > 1) { for(int i = 1; i < trs.size(); i++) { Elements spans = trs.get(i).select("span"); if(spans.size() == 6) { TestArrangeCourse course = new TestArrangeCourse(); course.setClassName(spans.get(0).html()); course.setTeacherName(spans.get(1).html()); course.setClassroomName(spans.get(5).html()); course.setDayPeriod(spans.get(4).html()); course.setTestDate(spans.get(3).html()); course.setCourseName(spans.get(2).html()); courses.add(course); } } } return courses; } catch(Exception e) { throw new Exception(e); } } @Override public List<TestArrangeCourse> getTestArrangementBySemester( Context context, String semester) throws Exception { try { YCApplication app = (YCApplication) context.getApplicationContext(); String url = (String) app.get("selectedIp") + Constant.testArrangeQuery; HttpGet request = new HttpGet(url); HttpResponse response = app.getClient().execute(request); InputStream is = response.getEntity().getContent(); BufferedReader br = new BufferedReader(new InputStreamReader(is, Constant.ENCODING)); StringBuilder sb = new StringBuilder(); String temp = null; while ((temp = br.readLine()) != null) { if (temp.contains("<script language")) { break; // ��Լʱ�� } sb.append(temp); } List<NameValuePair> urlParameters = new ArrayList<NameValuePair>(); // post ������� urlParameters.add(new BasicNameValuePair("Button1", "��ѯ")); urlParameters.add(new BasicNameValuePair("Cbo_Xueqi", semester)); Document doc = Jsoup.parse(sb.toString()); Elements elements = doc.select("input"); for (Element element : elements) { if ("__EVENTTARGET".equals(element.attr("name"))) { urlParameters.add(new BasicNameValuePair("__EVENTTARGET", element.val())); } else if ("__EVENTARGUMENT".equals(element.attr("name"))) { urlParameters.add(new BasicNameValuePair("__EVENTARGUMENT", element.val())); } else if ("__VIEWSTATE".equals(element.attr("name"))) { urlParameters.add(new BasicNameValuePair("__VIEWSTATE", element.val())); } } // post���ν��� HttpPost post = new HttpPost(url); post.setEntity(new UrlEncodedFormEntity(urlParameters, Constant.ENCODING)); response = app.getClient().execute(post); BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity() .getContent(), Constant.ENCODING), 8192); sb = new StringBuilder(); while ((temp = rd.readLine()) != null) { sb.append(temp); System.out.println(temp); } List<TestArrangeCourse> courses = new ArrayList<TestArrangeCourse>(); doc = Jsoup.parse(sb.toString()); Elements table = doc.select("#DG_PTHasselect"); Elements trs = table.select("tr"); if(trs.size() > 1) { for(int i = 1; i < trs.size(); i++) { Elements spans = trs.get(i).select("span"); if(spans.size() == 6) { TestArrangeCourse course = new TestArrangeCourse(); course.setClassName(spans.get(0).html()); course.setTeacherName(spans.get(1).html()); course.setClassroomName(spans.get(5).html()); course.setDayPeriod(spans.get(4).html()); course.setTestDate(spans.get(3).html()); course.setCourseName(spans.get(2).html()); courses.add(course); } } } return courses; } catch (Exception e) { throw new Exception(e); } } @Override public List<String> getSemesters(Context context) throws Exception { try { YCApplication app = (YCApplication) context.getApplicationContext(); String url = (String) app.get("selectedIp") + Constant.testArrangeQuery; HttpGet request = new HttpGet(url); HttpResponse response = app.getClient().execute(request); InputStream is = response.getEntity().getContent(); BufferedReader br = new BufferedReader(new InputStreamReader(is, Constant.ENCODING)); StringBuilder sb = new StringBuilder(); String temp = null; while ((temp = br.readLine()) != null) { sb.append(temp); System.out.println(temp); } Document doc = Jsoup.parse(sb.toString()); Elements table = doc.select("#Cbo_Xueqi"); Elements options = table.select("option"); List<String> semesterItems = new ArrayList<String>(); for(int i = 0; i < options.size(); i++) { semesterItems.add(options.get(i).html()); if(options.get(i).attr("selected").equals("selected")) { app.put("selected_semester_index", i); } } // �洢Ĭ��ѧ�� return semesterItems; } catch(Exception e) { throw new Exception(e); } } }