[TIL]221114 - Kotlin Volley(1)

Jimin·2022년 11월 15일
0
post-thumbnail
post-custom-banner

Volley란?

  • 구글에서 기존의 HttpClient를 대신해 인터넷에 편하고 효율적으로 접근하기 위해 지원하는 라이브러리
  • 다수의 네트워크접근 요청 처리 용이
  • 속도가 빠른 것이 가장 큰 장점
//AndroidManifest.xml
<manifest
	<uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    
    <application
    	android:usesCleartextTraffic="true">
        //생략
    </application>

/manifest>


Volley 작동 과정

  • Request 요청 객체를 만들고 이 객체를 requestQueue에 넣어주면 자동으로 웹서버에 요청을 해주고 응답을 받아 사용자가 사용할 수 있도록 지정된 메소드를 호출해줌

private lateinit var queue: RequestQueue : 처리할 request 객체 저장

queue = Volley.newRequestQueue(application) : application 대신 this 사용 가능

 binding.btnConnect.setOnClickListener {
 	val url = "...생략..."
    val request = JsonObjectRequest(Request.Method.GET, url, null,
        {
            //처리가 잘 됐을 때 call-back 함수
            Toast.makeText(application, it.toString(), Toast.LENGTH_LONG).show()
        },
        {
            //에러가 났을 때 호출되는 함수
            Toast.makeText(application, it.toString(), Toast.LENGTH_LONG).show()
        }
    )
    queue.add(request)
}
  • JSONObject: {객체}
  • JSONArray: [배열]

실습 전체 코드

//MainActivity.kt
class MainActivity : AppCompatActivity() {
    private lateinit var binding: ActivityMainBinding
    private lateinit var queue: RequestQueue

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        queue = Volley.newRequestQueue(application)
        binding.btnConnect.setOnClickListener {
            val url = "https://yts.torrentbay.to/api/v2/list_movies.json?sort=rating&limit=30"
            val request = JsonObjectRequest(
                Request.Method.GET,
                url,
                null,
                {
                    //처리가 잘 됐을 때 call-back 함수
                    Toast.makeText(application, it.toString(), Toast.LENGTH_LONG).show()
                },
                {
                    //에러가 났을 때 호출되는 함수
                    Toast.makeText(application, it.toString(), Toast.LENGTH_LONG).show()
                }
            )
            queue.add(request)
        }
    }
}

post-custom-banner

0개의 댓글