# iUESTC
<img src="https://github.com/Febers/iUESTC/blob/master/picture/app_icon.png" align=center />
## 关于
i成电 (iUESTC) 是一个为电子科技大学学生提供生活和学习帮助的 Android 客户端。由 *@Febers* 独立开发,目前只支持本科生使用
## 功能
- [x] 查看课表、成绩、当前学期考试情况
- [x] 图书馆图书检索功能
- [x] 查看校历、校车时刻表
- [x] 本科教学新闻查看
- [ ] ......
## 项目实现
### 登录
在早些版本中,数据的获取是通过模拟登录实现的:首先对教务系统的登录过程进行抓包,然后通过 OKHttp 登录,核心代码中的请求体为
```java
FormBody formBody = new FormBody.Builder()
.add("username",id)
.add("password",pw)
.add("lt",lt)
.add("_eventId","submit")
.add("dllt","userNamePasswordLogin")
.add("execution",exec)
.add("rmShown","1")
.build();
```
上面的很多参数都隐藏在信息门户首页的 HTML 源代码中,解决方法是通过 Jsoup 解析 DOM 文档获取
之后教务系统将隐藏的验证码常规化,需要添加一个参数`captchaResponse`,同样可以通过抓包的方式获取
这种方式已经废弃,原因有下:
- 模拟登录的状态保持是通过持久化 Cookie 实现的,但是 Cookie 的有效时间很短。一旦过期,登录状态将丢失,需要重新登录,所以每次请求都要判断登录状态是否有效,否则无法正确获取比如课表、考试情况等最新的信息
- 登录或重新登录的过程非常繁琐,Java 代码模拟浏览器需要复杂的逻辑,并且需要本地保存用户账号密码
- 教务系统的登录方式很有可能再次发生变化,旧的模拟登录方式将失效,届时应用将瘫痪
> 早期 git commit 写法不规范,很难找到以前的代码,可以在 Release 界面下载 Beta3.0 的源码,查看`BeforeLoginModel.java`文件
现在采取的方式为:通过 WebView 打开教务系统的登录界面,由用户手动登录,之后通过 WebView 的`addJavascriptInterface`方法拦截返回的代码判断是否登录成功——这其中牵扯到 Java 代码和 JavaScript 代码的交互,不再赘述
之后课表、考试信息的获取仍然是通过模拟浏览器的 POST 请求。最关键的一点在于:自定义 [CookiesManager](https://github.com/Febers/iUESTC/blob/master/app/src/main/java/com/febers/iuestc/net/CustomCookiesManager.java) ,使得 OkHttpClient 可以共享 WebView 的 Cookie,这是一切的前提
### 其他
整体采用MVP的设计架构,网络请求框架为 OkHttp,UI则采用了开源框架 Fragmentation
整个项目的功能位于 module,每个功能模块按照 MVP 分层实现。其中 Model 层负责数据的获取和存取,View 层则负责显示数据,Presenter 充当上述两者的桥梁。
## 四、使用截图
<img src="https://github.com/Febers/iUESTC/blob/master/picture/sreen3.png" />
<img src="https://github.com/Febers/iUESTC/blob/master/picture/sreen1.png" />
<img src="https://github.com/Febers/iUESTC/blob/master/picture/sreen2.png" />
<img src="https://github.com/Febers/iUESTC/blob/master/picture/sreen4.png" />
<img src="https://github.com/Febers/iUESTC/blob/master/picture/sreen5.png" />
## 五、开源相关
[okhttp](https://github.com/square/okhttp)、[RecyclerViewAdapter](https://github.com/SheHuan/RecyclerViewAdapter)、[Fragmentation](https://github.com/YoKeyword/Fragmentation)、[ListItemView](https://github.com/lurbas/ListItemView)、
[multiline-collapsingtoolbar](https://github.com/opacapp/multiline-collapsingtoolbar)、[MPAndroidChart](https://github.com/PhilJay/MPAndroidChart)、[SmartRefreshLayout](https://github.com/scwang90/SmartRefreshLayout)、
[Android-PickerView](https://github.com/Bigkoo/Android-PickerView)、[BottomNavigation](https://github.com/Ashok-Varma/BottomNavigation)、[jsoup](https://github.com/jhy/jsoup)、[gson](https://github.com/google/gson)
没有合适的资源?快使用搜索试试~ 我知道了~
电子科技大学本科教务系统Android客户端.zip
共318个文件
java:126个
xml:108个
png:64个
需积分: 5 0 下载量 8 浏览量
2024-03-10
10:15:43
上传
评论
收藏 2.11MB ZIP 举报
温馨提示
【项目资源】: 包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。 包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。
资源推荐
资源详情
资源评论
收起资源包目录
电子科技大学本科教务系统Android客户端.zip (318个子文件)
gradlew.bat 2KB
.gitignore 1002B
.gitignore 7B
build.gradle 3KB
build.gradle 588B
settings.gradle 130B
gradlew 5KB
gradle-wrapper.jar 52KB
PinchImageView.java 58KB
CustomSupportFragment.java 13KB
LibraryModelImpl.java 11KB
WebViewConfigure.java 10KB
CustomSupportActivity.java 9KB
NewsModelImpl.java 9KB
MoreFragment.java 8KB
PersistentCookieStore.java 7KB
CourseViewHelper.java 7KB
CourseFragment.java 6KB
CourseUtil.java 6KB
GradeImgFragment.java 5KB
ExamActivity.java 5KB
GradeModelImpl.java 5KB
UserModelImpl.java 5KB
MyApp.java 5KB
GradeActivity.java 5KB
CourseResolver.java 5KB
UserActivity.java 5KB
LibQueryActivity.java 4KB
CalenderModelImpl.java 4KB
CourseModelImpl.java 4KB
CustomCourseDialog.java 4KB
HomeActivity.java 4KB
SPUtil.java 4KB
ToastUtil.java 4KB
LibraryFragment.java 3KB
CustomLoginDialog.java 3KB
BaseFragment.java 3KB
ApiUtil.java 3KB
UpdateActivity.java 3KB
NewsActivity.java 3KB
BaseActivity.java 3KB
ExamModelImpl.java 3KB
GradeListFragment.java 3KB
NewsFragment.java 3KB
ThemeActivity.java 3KB
CalenderActivity.java 3KB
BeanUser.java 3KB
CustomViewPager.java 3KB
BeanGrade.java 3KB
CircleImageView.java 3KB
BeanCourse.java 3KB
BusActivity.java 3KB
AboutActivity.java 3KB
LoginActivity.java 2KB
LoginResolver.java 2KB
BeanBook.java 2KB
NewsDetailActivity.java 2KB
BeanUpdate.java 2KB
GradeUtil.java 2KB
SerializableOkHttpCookies.java 2KB
CourseStore.java 2KB
LibraryPresenterImp.java 2KB
FileSizeUtil.java 2KB
ExamStore.java 2KB
LogoutHelper.java 2KB
ExamResolver.java 2KB
BaseSwipeActivity.java 2KB
LibDetailActivity.java 2KB
BaseModel.java 2KB
CustomUpdateDialog.java 2KB
AdapterUser.java 2KB
UserStore.java 2KB
BeanExam.java 2KB
CustomCookiesManager.java 2KB
SingletonClient.java 1KB
CustomProgressDialog.java 1KB
NewsFragmentManager.java 1KB
BeanGradeSummary.java 1KB
GradeStore.java 1KB
Constants.java 1KB
LibraryContract.java 1KB
TimeUtil.java 1KB
AdapterExam.java 1KB
AdapterTheme.java 1KB
AdapterGrade.java 1KB
TermUtil.java 1KB
LoginContract.java 1KB
UnicodeUtil.java 1KB
AdapterGradeViewPager.java 1KB
NewsPresenterImpl.java 1016B
LoginJSInterface.java 1016B
SemesterUtil.java 1001B
SplashActivity.java 984B
AdapterSetting.java 977B
AdapterNewsViewPager.java 925B
WebViewUtil.java 922B
AdapterNews.java 913B
AdapterQuery.java 907B
BeanNews.java 901B
CustomGridView.java 899B
共 318 条
- 1
- 2
- 3
- 4
资源评论
妄北y
- 粉丝: 1w+
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 简单的Linux C代码,实现链表功能
- 汇编语言探索之旅:从基础到实践,解锁底层奥秘-markdown材料.zip
- Fortran语言:经典与现代交织的编程之旅-markdown材料.zip
- 基于python编写的appium自动化框架,采用PO模式,并集成了日志以及测试报告通过邮件发送的功能
- csdn.apk
- spleeter模型下载
- 微信小程序 - 图书管理系统源码.zip
- 微信小程序 - 图片自适应 ,富文本解析源码.zip
- 微信小程序 - 同乐居商城:购物车合算源码
- 1、根据输入的三条边值判断能组成何种三角形,并设计测试数据进行判定覆盖测试 三条边为变量a、b、c,范围为1≤边值≤10,不在范
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功