# 安卓学习
**Repository Path**: huang_siting/android-learning
## Basic Information
- **Project Name**: 安卓学习
- **Description**: 关于安卓的一点点学习
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2020-12-15
- **Last Updated**: 2020-12-21
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 安卓学习
#### 介绍
{**以下是 Gitee 平台说明,您可以替换此简介**
Gitee 是 OSCHINA 推出的基于 Git 的代码托管平台(同时支持 SVN)。专为开发者提供稳定、高效、安全的云端软件开发协作平台
无论是个人、团队、或是企业,都能够用 Gitee 实现代码托管、项目管理、协作开发。企业项目请看 [https://gitee.com/enterprises](https://gitee.com/enterprises)}
#### 软件架构
软件架构说明
#### 安装教程
1. xxxx
2. xxxx
3. xxxx
#### 使用说明
1. xxxx
2. xxxx
3. xxxx
#### 参与贡献
1. Fork 本仓库
2. 新建 Feat_xxx 分支
3. 提交代码
4. 新建 Pull Request
#### 特技
1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com)
3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目
4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
## 一、retrofit网络数据请求
背景:学校安卓大作业,实现的是一个考勤的app,编写后端接口,再用安卓调用,经过尝试,实现的是okhttp和retrofit两种方式请求提交数据和返回,比较好用的是retrofit,这里详细介绍这种方式
1、配置
添加网络依赖
```xml
```
明文访问
```xml
android:usesCleartextTraffic="true"
```
导包
```xml
implementation "com.squareup.retrofit2:retrofit:2.6.1"
implementation "com.squareup.retrofit2:converter-gson:2.6.1"
```
2、具体实现
后台的数据接口
```java
@ResponseBody
@RequestMapping("queryAllStudent")
public List queryAllStudent(@RequestParam("username") String username){
System.out.println(username);
return studentServiceImpl.queryAllStudent();
}
```
安卓端
返回数据是一个student
StudentService.kt
```kotlin
class Student(val studentId:Int,val name:String,val password:String,val attendanceTime:Int){
override fun toString(): String {
return "Student(studentId=$studentId, name='$name', password='$password', attendanceTime=$attendanceTime)"
}
}
interface StudentService {
@FormUrlEncoded
@POST("student/queryAllStudent")
fun getStudentData(@Field("username") username : String): Call>
}
```
MainActivity
```kotlin
class MainActivity : AppCompatActivity() {
val retrofit = Retrofit.Builder()
//在res的string.xml中配置一个base_url
.baseUrl(this.getString(R.string.base_url))
.addConverterFactory(GsonConverterFactory.create())
.build()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val studentService = retrofit.create(StudentService::class.java)
studentService.getStudentData("张三").enqueue(object: Callback>{
override fun onResponse(call: Call>, response: Response>) {
val textView = findViewById(R.id.textView) as TextView
val list = response.body()
Log.d("responseMessage",response.toString())
if(list!=null){
for (student in list){
Log.d("student",student.toString())
textView.text = student.toString()
}
}
}
override fun onFailure(call: Call>, t: Throwable) {
Log.d("error","error")
}
})
}
```