许久才来更新,因为最近都在忙碌各种项目,所以就落下了博客的更新,深感内疚。 —— 前言
华师小木自从我们学校校庆之后就开始了大范围的推广,作为android开发的我们,都多多少少对于课表获取、成绩获取等感到好奇,而我其中的一个项目也有涉及到此类开发,所以就干脆撸了一个类库,把它封装成了scnu-jwc-sdk-1.0.0.jar,技术核心是利用http获取网页数据并且进行解析,旨在为广大的android爱好者更方便地进行开发一系列的服务华师小应用。
自己一直很喜欢去封装一些东西,因为当看到许多人能够用上自己的类库进行开发,而且也确实能够为他们提供方便、高效开发的效率,这让我感到很开心,因为我做了这么多,确实是帮助了需要的人,不仅是你,还是我,都会在这交流中不断进步,让这事业变得更开阔!
接下来,就介绍一下该SDK的功能,
包括:
1、模拟登陆;
2、获取学生信息;
3、获取学生成绩;
4、获取学生绩点。
优点是:
1、这4个功能的封装基本满足了应用的需求;
2、使用快速、方便,仅须调用一个接口即可,几分钟便可集成到项目中。
SDK目录结构:
接下来就讲解一下如何进行使用该SDK:
1、首先把libs目录下的以下两个文件导入到工程jar;
2、添加权限:
<uses-permission android:name="android.permission.INTERNET" />
3、必须先进行模拟登陆:
/**
* 登陆教务处
*
* 这个必须先进行初始化,只有登陆了才有可能获取成绩、个人信息、绩点等。
*/
private void initJwcLogin()
{
//请求服务器,监听状态
jwcLogin.request(number.getText().toString(), password.getText().toString(), new JwcLoginListener() {
@Override
public void loginStart() {
// TODO 自动生成的方法存根
state.setText("开始登陆中...");
}
@Override
public void loginFail() {
// TODO 自动生成的方法存根
state.setText("登陆失败");
loginState.setText("登陆失败\n");
}
@Override
public void loginSuccess() {
// TODO 自动生成的方法存根
state.setText("登陆成功");
loginState.setText("登陆成功\n");
initJwcInfo();
}
});
}
/**
* 初始化学生信息
*
* 必需在登陆教务处之后才可以调用
*/
private void initJwcInfo()
{
jwcInfo.request(new JwcInfoListener() {
@Override
public void infoSuccess(String number, String name, String sex,
String academy, String especial) {
// TODO 自动生成的方法存根
state.setText("获取个人信息成功");
info.setText("学号:" + number + "\n" +
"姓名:" + name + "\n" +
"性别:" + sex + "\n" +
"学院:" + academy + "\n" +
"专业:" + especial + "\n");
initJwcScore();
}
@Override
public void infoStart() {
// TODO 自动生成的方法存根
state.setText("开始获取学生信息中...");
}
@Override
public void infoFail() {
// TODO 自动生成的方法存根
state.setText("获取学生信息失败");
}
});
}
/**
* 初始化教务处个人学生成绩
*
* 必需在登陆教务处之后才可以调用
*/
private void initJwcScore()
{
//请求教务处学生成绩,这里是获取2014-2015学年第一学期成绩
jwcScore.request("2014-2015", "1", new JwcScoreListener() {
@Override
public void scoreSuccess(List<Score> scores) {
// TODO 自动生成的方法存根
String str = "";
for(Score score : scores)
{
str += score.getName() + ":" + score.getScore() + "\n";
}
MainActivity.this.score.setText(str);
state.setText("获取成绩成功");
initJwcGradePoint();
}
@Override
public void scoreStart() {
// TODO 自动生成的方法存根
state.setText("开始获取成绩中...");
}
@Override
public void scoreFail() {
// TODO 自动生成的方法存根
state.setText("获取成绩失败");
}
});
}
6、获取学生绩点:
/**
* 初始化教务处学生绩点
*
* 必需在登陆教务处之后才可以调用
*/
private void initJwcGradePoint()
{
//请求教务处学生绩点,这里是获取2014-2015学年第一学期绩点
jwcGradePoint.request("2014-2015", "1", new JwcGradePointListener() {
@Override
public void gradePointSuccess(String gradePoint) {
// TODO 自动生成的方法存根
state.setText("获取绩点成功");
point.setText("绩点:" + gradePoint + "\n" );
}
@Override
public void gradePointStart() {
// TODO 自动生成的方法存根
state.setText("开始获取绩点中...");
}
@Override
public void gradePointFail() {
// TODO 自动生成的方法存根
state.setText("获取绩点失败");
}
});
}
好了,基本是这样子了,此SDK已经放在了Github上面,包括了SDK、Demo和开发文档,方便android开发者,特别是华师的android开发者使用,当然,因为是个人独立开发,难免有疏忽的地方,非常大家欢迎多多反馈,同时,也非常大家共同交流,让这事业、环境、我们变得越来越好~~
Github:Android-SCNU-JWC-SDK-1.0.0
越来越发觉对于IT的喜爱,就像这无尽的夜啊~