Notice
Recent Posts
Recent Comments
Link
투케이2K
204. (kotlin/코틀린) okhttp 사용해 post body json 방식 api 호출 수행 실시 본문
[개발 환경 설정]
개발 툴 : AndroidStudio
개발 언어 : Kotlin
[소스 코드]
// TODO [테스트 메소드 정의 실시]
fun testMain(){
Log.i("---","---")
Log.d("//===========//","================================================")
Log.i("","\n"+"[Test_Kotlin > testMain() 메소드 : 테스트 함수 동작 실시]")
Log.d("//===========//","================================================")
Log.i("---","---")
/**
* ------------------------------------
* TODO [요약 설명]
* ------------------------------------
* 1. okhttp : http 요청을 수행할 수 있는 라이브러리입니다.
* ------------------------------------
* 2. 필요 implementation :
*
* implementation("com.squareup.okhttp3:okhttp:4.9.0")
* ------------------------------------
* 3. 필요 import :
*
* import okhttp3.*
* ------------------------------------
* */
// [로직 처리 실시]
try{
// ------------------------------------
// TODO [전송 url 정의 실시]
val url = "https://jsonplaceholder.typicode.com/posts"
// TODO [파라미터값 선언 실시]
val params = HashMap<String, Any>()
params["userId"] = 1
params["id"] = 1
// TODO [FormBody 선언]
val formBody = FormBody.Builder()
// TODO [body 에 데이터 추가 실시]
val httpBuilder = Uri.Builder()
val set: Set<*> = params.keys
val iterator = set.iterator()
while (iterator.hasNext()) {
// [body 에 데이터 추가]
val key = iterator.next() as String
formBody.add(key, params[key].toString())
}
// TODO [OK HTTP 객체 선언 실시]
val client = OkHttpClient()
val request = Request.Builder()
request.addHeader(
"Content-Type",
"application/json;"
) // [헤더 추가]
// TODO [Request.Builder 에 추가]
request.url(url + httpBuilder.toString())
request.post(formBody.build())
Log.i("---","---")
Log.w("//===========//","================================================")
Log.i("","\n"+"[Test_Kotlin > testMain() 메소드 : OK HTTP 요청 실시]")
Log.i("","\n"+"[originUrl : "+ url +"]")
Log.i("","\n"+"[bodyData : "+ params.toString() +"]")
Log.w("//===========//","================================================")
Log.i("---","---")
// TODO [http 요청 수행 실시]
//*
client.newCall(request.build()).enqueue(object : Callback {
// TODO [응답을 받은 경우]
override fun onResponse(call: Call, response: Response) {
val responseBody = response.body?.string()
Log.i("---","---")
Log.w("//===========//","================================================")
Log.i("","\n"+"[Test_Kotlin > testMain() 메소드 : OK HTTP 응답 확인]")
Log.i("","\n"+"[responseStatusCode : "+ response.code +"]")
//Log.i("","\n"+"[responseHeader : "+ response.headers +"]")
Log.i("","\n"+"[responseBodyData : "+ responseBody +"]")
Log.w("//===========//","================================================")
Log.i("---","---")
}
// TODO [응답을 받지 못한 경우]
override fun onFailure(call: Call, e: IOException) {
Log.i("---","---")
Log.e("//===========//","================================================")
Log.i("","\n"+"[Test_Kotlin > testMain() 메소드 : OK HTTP 요청 실패]")
Log.i("","\n"+"[error : "+ e.message +"]")
Log.e("//===========//","================================================")
Log.i("---","---")
}
})
// */
// ------------------------------------
}
catch(e : Exception){
Log.i("---","---")
Log.e("//===========//","================================================")
Log.i("","\n"+"[Test_Kotlin > testMain() 메소드 : 에러 상황 발생]")
Log.i("","\n"+"[error : "+e.message+"]")
Log.e("//===========//","================================================")
Log.i("---","---")
}
}
[결과 출력]
반응형
'Kotlin' 카테고리의 다른 글
Comments