[Android/Kotlin] Volley 라이브러리

핸디·2021년 8월 11일
0

안드로이드

목록 보기
9/9

Volley?

웹 서버에 요청하고 응답을 받을때 사용하는 라이브러리

사용방법

'요청(Request) 객체'를 만들고 이 요청 객체를 '요청 큐(RequestQueue)'에 넣는다.
-> 요청 큐가 알아서 웹 서버에 요청학 응답까지 받아준다!😉
내가 만들어야 하는 부분: 응답 받았을때 어떻게 처리할지, 메서드

사용해보기

1) build.gradle 에 volley 추가, Manifest에 권한 추가

dependencies{
	implementation 'com.android.volley:volley:1.1.1'
   }

<uses-permission android:name="android.permission.INTERNET"/>

<application
	android:usesCleartextTraffic="true">
    

2) 요청할 웹주소에서 키 값 발급받기 , 요청주소 받아오기

cf) JSON 객체 정보
{ <속성이름>:<속성값>, <속성이름>:<속성값> }
배열의 경우엔 대괄호 사용, 배열 안에 객체 들어간 경우 중괄호고 구분된 객체들을 콤마로 이어줌!
[{ <속성이름>:<속성값>, <속성이름>:<속성값> }]

3) MainActivity에서 RequestQueue객체 만들기

-> Volley.newRequestQueue 메서드 호출시 RequestQueue객체 만들어짐

class MainActivity : AppCompatActivity() {

    companion object{
        var requestQueue: RequestQueue?=null //여기!
    }

    private lateinit var binding: ActivityMainBinding

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

        setContentView(binding.root)

        requestQueue= Volley.newRequestQueue(applicationContext) //여기!

4) 응답 받았을때 처리할 메서드 만들기

-> 버튼 눌렀을때 응답오도록 만들어보자!

binding.requestButton.setOnClickListener {
            send()
        }
    }

    fun send(){
        val url=binding.input1.text.toString()
        val request=object: StringRequest(
            Request.Method.GET,
            url,
            {
                binding.output1.append("\n응답->${it}")
            },
            {
                binding.output1.append("\n에러->${it}")
            }

        ){
            override fun getParams():MutableMap<String,String>{
                val params=HashMap<String,String>()
                params["userid"]="john"

                return params
            }
        }

        request.setShouldCache(false)
        requestQueue?.add(request)
        binding.output1.append("요청함")
    }
}

StringRequest객체를 만들어서 requestQueue에 넣어준다.
StringRequest 객체 만들기 위한 파라미터 (4가지)
=(GET/POST등 요청방식,요청 보낼 사이트 주소, 응답처리할 람다식 , 에러발생시 람다식)

  • 요청 보낼때 요청파라미터 있을땐 getParams()메서드를 사용
    (실제 웹서비스 요청엔 필요하지 않다..?)

requestQueue?.add(request) -> 요청 객체를 축한다.
cf) setShouldCache 는 캐싱(=이미 받은 응답 재사용)을 할지 여부 결정

결과

일단 결과 받아오는 것만 확인하려고 했기 때문에 레이아웃이나 그런건 없다..!^^

참고

https://developer.android.com/training/volley/simple?hl=ko

0개의 댓글