以下是用IDEA后端Java开发(如Spring Boot)与Android Studio前端开发app的逻辑实现步骤详解:
一、技术选择
- 通信协议:推荐使用RESTful API(HTTP/HTTPS)
- 数据格式:JSON(轻量级且跨平台)
- 后端框架:Spring Boot
- Android网络库:Retrofit + OkHttp
- 接口测试工具:Postman
二、实现步骤
1. 后端开发(IDEA Spring Boot)
// 示例:用户API接口
@RestController
@CrossOrigin(origins = "*") // 解决跨域问题
@RequestMapping("/api/users")
public class UserController {@Autowiredprivate UserService userService;// 创建用户@PostMappingpublic ResponseEntity<User> createUser(@RequestBody User user) {User createdUser = userService.createUser(user);return new ResponseEntity<>(createdUser, HttpStatus.CREATED);}// 获取用户列表@GetMappingpublic List<User> getAllUsers() {return userService.getAllUsers();}// 根据ID查询用户@GetMapping("/{id}")public ResponseEntity<User> getUserById(@PathVariable Long id) {return userService.getUserById(id).map(user -> new ResponseEntity<>(user, HttpStatus.OK)).orElse(new ResponseEntity<>(HttpStatus.NOT_FOUND));}
}
关键配置:
# application.properties
server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.jpa.hibernate.ddl-auto=update
2. 前端开发(Android Studio)
步骤1:添加依赖
// build.gradle (Module)
dependencies {implementation 'com.squareup.retrofit2:retrofit:2.9.0'implementation 'com.squareup.retrofit2:converter-gson:2.9.0'implementation 'com.squareup.okhttp3:logging-interceptor:4.9.3'
}
步骤2:创建数据模型
// User.kt
data class User(@SerializedName("id") val id: Long,@SerializedName("name") val name: String,@SerializedName("email") val email: String
)
步骤3:配置Retrofit
// ApiClient.kt
object ApiClient {private const val BASE_URL = "http://10.0.2.2:8080/api/" // Android模拟器访问本机地址private val okHttpClient = OkHttpClient.Builder().addInterceptor(HttpLoggingInterceptor().apply {level = HttpLoggingInterceptor.Level.BODY}).build()private val retrofit = Retrofit.Builder().baseUrl(BASE_URL).client(okHttpClient).addConverterFactory(GsonConverterFactory.create()).build()val userService: UserService = retrofit.create(UserService::class.java)
}
步骤4:定义API接口
// UserService.kt
interface UserService {@GET("users")suspend fun getUsers(): Response<List<User>>@POST("users")suspend fun createUser(@Body user: User): Response<User>@GET("users/{id}")suspend fun getUserById(@Path("id") id: Long): Response<User>
}
步骤5:发起网络请求
// MainActivity.kt
class MainActivity : AppCompatActivity() {private val userService = ApiClient.userServiceoverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)CoroutineScope(Dispatchers.IO).launch {try {// 获取用户列表val response = userService.getUsers()if (response.isSuccessful) {val users = response.body()users?.forEach { user ->Log.d("API_RESPONSE", "User: ${user.name}")}}} catch (e: Exception) {e.printStackTrace()}}}
}
三、联调关键点
-
IP地址配置:
- 模拟器访问本机:
10.0.2.2
- 真机调试需保证手机与PC在同一局域网,使用PC的局域网IP
- 模拟器访问本机:
-
网络权限:
<!-- AndroidManifest.xml --> <uses-permission android:name="android.permission.INTERNET" />
四、测试流程
- 使用Postman测试后端接口
- 启动Android模拟器
- 查看Logcat输出