# 安卓学习 **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") } }) } ```