import okhttp3.*
import java.io.IOException
class MainActivity : AppCompatActivity() {
companion object {
private const val BASE_URL = "http://your-django-server-url.com/api" // Django 서버의 API 엔드포인트 URL
}
private val client = OkHttpClient()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// 네트워크 요청 보내기
val request = Request.Builder()
.url("$BASE_URL/data") // 데이터를 반환하는 API 엔드포인트 URL
.build()
client.newCall(request).enqueue(object : Callback {
override fun onResponse(call: Call, response: Response) {
val responseData = response.body?.string()
// JSON 데이터 파싱 및 활용
if (responseData != null) {
// responseData를 원하는 방식으로 파싱하여 사용
runOnUiThread {
// UI 업데이트 작업 수행
// 파싱된 데이터를 UI 요소에 표시
}
}
}
override fun onFailure(call: Call, e: IOException) {
e.printStackTrace()
// 네트워크 요청 실패 처리
}
})
}
}
client.newCall(request)
비동기적 네트워크 요청
Callback
인터페이스 구현
주의사항
- 네트워크요청은 UI 스레드에서 직접 수행하면 안됨
runOnUiThread나 다른방법 사용해야함
dependencies {
// Retrofit 라이브러리 의존성 추가
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
}
data class MyData(
val id: Int,
val name: String,
// 추가 필드 정의
}
interface MyApiService{
@GET("/api/data") // API 엔드포인트 경로
suspent fun get Data(): List<MyData>
}
class MainActivity: AppCompatActivity(){
companino object{
private const val BASE_URL = "http://your-django-server-url.com"
}
private lateinit var apiService:MyApiService
override fun onCreate(savedInstanceState: Bundel?){
super.onCreate(savedInstanceState)
setConentView(R.layout.activity_main)
//Retrofit 인스턴스 생성
val retrofit = Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build()
//Retrofit을 사용하여 인터페이스 구현체 생성
apiService = retrofit.create(MyApiService::class.java)
//데이터 가져오기 요청
CoroutineScope(Dispatehrs.IO).launch{
try{
val data = apiService.getData()
//데이터 파싱 및 저장 처리
processData(data)
} catch (e: Exception){
e.printStackTrace()
}
}
}
private fun prcessData(data: List<MyData>){
// 데이터를 원하는 방식으로 파싱하고 저장하는 로직 구현
for(item in data){
val id = item.id
val name = item.name
//데이터 활용
}
}
}