package com.seu.android_diabetes.test
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
object ApiClient {
private const val BASE_URL = "http://192.168.31.247:8088/api/"
private val retrofit = Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build()
val apiService: ApiService = retrofit.create(ApiService::class.java)
}
-------------------------------------------
package com.seu.android_diabetes.test
import retrofit2.http.GET
interface ApiService {
@GET("orders")
suspend fun getOrders(): List<Order>
}
---------------------------------------------
package com.seu.android_diabetes.test
import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.RecyclerView
import com.seu.android_diabetes.R
import com.seu.android_diabetes.test.ApiClient.apiService
import kotlinx.coroutines.delay
import kotlinx.coroutines.isActive
import kotlinx.coroutines.launch
public class MainActivity : AppCompatActivity() {
private lateinit var recyclerView: RecyclerView
private lateinit var viewAdapter: OrderAdapter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.test_main)
recyclerView = findViewById(R.id.recyclerView)
viewAdapter = OrderAdapter()
recyclerView.adapter = viewAdapter
// 启动协程,定时执行请求
lifecycleScope.launch {
while (isActive) {
try {
val orders = ApiClient.apiService.getOrders()
viewAdapter.updateOrders(orders)
} catch (e: Exception) {
Log.e("MainActivity", "Error fetching orders", e)
}
delay(5000) // 等待 5 秒
}
}
}
}
-----------------------------------------------------------
kotlin用到了协程去访问spring boot的接口,接口用retrofit封装,每5秒轮询一次
package com.seu.spring_diabetes.controller;
import com.seu.spring_diabetes.pojo.TestOrder;
import com.seu.spring_diabetes.service.OrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/api")
public class OrderController {
@Autowired
private OrderService orderService;
@PostMapping("/orders")
public int createOrder(@RequestBody TestOrder order) {
return orderService.saveOrder(order);
}
@GetMapping("/orders")
public List<TestOrder> getAllOrders() {
return orderService.getAllOrders();
}
}
spring boot端的存取订单的接口
postman的runner模拟一下1000个跌倒看看拉取的效果