前一篇完成了登陆部分登陆部分链接
这一篇就讲成绩查询
登陆成后网页后,点击成绩查询页面,截下网络请求。如图:
gnmkdm=N121605 是固定的,__VIEWSTATE这个值是每次都变得所以要在get请求的代码如下
Request request = new Request.Builder().url(loginScoreUrl) .addHeader("Host", Constant.HOST) .addHeader("Referer", Constant.GET_LOGIN_URL+studentID) .addHeader("Cookie", Constant.sCookie).build(); OkHttpClient okHttpClient = new OkHttpClient().newBuilder().cookieJar(mCookieJar).build(); okHttpClient.newCall(request).enqueue(new Callback() { //获取__VIEWSTATE的值 String html = Objects.requireNonNull(response.body()).string(); String viewstate = Jsoup.parse(html).select("input[name=__VIEWSTATE]").val(); //传参数查成绩 scoreSearch(xm, loginScoreUrl, viewstate); });__VIEWSTATE获取到以后就是,请求成绩了
可以看出查询成绩是个post请求 所以和之前登陆的post请求一样,带着主体部分进行请求就好了,别忘了cookieJar ArrayList<String> arrayList = new ArrayList<>(); String s = Objects.requireNonNull(response.body()).string(); //jsoup解析html Document parse = Jsoup.parse(s); Elements alt = parse.getElementsByClass("datelist"); Elements trs = alt.tagName("tr"); for (Element tr : trs) { Elements tds = tr.getElementsByTag("td"); for (Element td : tds) { arrayList.add(td.text()); } } ......//从arrayList拿出你想要的数据,封装到List<JavaBean>里面,再把List<JavaBean>数据给RecyclerView就O了