문제의 이유
API에서 OBJECT형식으로 받아와야되는데 ARRAY형식으로 날아옴
내가 오류났던부분 (이렇게하면안됨)
TWAPI.kt
interface TWAPI {
@GET("{id}")
fun requestSearch(
@Path("id") id: String
// ,@Query("userNo") id2 : String
):Call<BibleData>
}
BibleActivity.kt
fun TWAPIstart(){
val response = TWAPIConfig.getService().requestSearch("tae")
response.enqueue(object : Callback<BibleData>{
override fun onResponse(call: Call<BibleData>, response: Response<BibleData>) {
var asd: BibleData? = response.body()
page = asd?.page
row = asd?.row
content = asd?.contents
Log.i("여기",page+","+row+","+content)
Log.i("여기",response.toString())
}
override fun onFailure(call: Call<BibleData>, t: Throwable) {
Log.i("여기Error",t.message.toString())
}
})
}
전에 한번 해본 방법이라 같은방법으로 하면될줄알았지만 이거는 하나만 가져올때 쓰는방법임 (배열이 아닐때)
수정된 방법 (배열로 올때는 이렇게해야됨)
TWAPI.kt
interface TWAPI {
@GET("{id}")
fun requestSearch(
@Path("id") id: String
// ,@Query("userNo") id2 : String
):Call<List<BibleData>>
}
List형식에 맞춰서 데이터 클래스를 넣어준다
BibleActivity.kt
fun TWAPIstart(){
val response = TWAPIConfig.getService().requestSearch("tae")
response.enqueue(object : Callback<List<BibleData>>{
override fun onResponse(call: Call<List<BibleData>>, response: Response<List<BibleData>>) {
var asd: List<BibleData>? = response.body()
page = asd?.get(0)?.page
row = asd?.get(0)?.row
content = asd?.get(0)?.contents
Log.i("여기",page+","+row+","+content)
Log.i("여기",response.toString())
}
override fun onFailure(call: Call<List<BibleData>>, t: Throwable) {
Log.i("여기Error",t.message.toString())
}
})
}
데이터 클래스가 들어가는부분에 다 List형식으로 맞춰준다
또한 배열형식으로 오기때문에 get함수로 인덱스 번호에 맞춰 데이터 클래스 변수에 이름에 맞춰서 가져온다
(for문돌려서 response사이즈 맞춰서 전부다 가져오면 될거같음)
'Kotlin' 카테고리의 다른 글
retrofit CLEARTEXT 오류 (0) | 2021.04.08 |
---|