웹 서버에 요청하고 응답을 받을때 사용하는 라이브러리
'요청(Request) 객체'를 만들고 이 요청 객체를 '요청 큐(RequestQueue)'에 넣는다.
-> 요청 큐가 알아서 웹 서버에 요청학 응답까지 받아준다!😉
내가 만들어야 하는 부분: 응답 받았을때 어떻게 처리할지, 메서드
dependencies{
implementation 'com.android.volley:volley:1.1.1'
}
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:usesCleartextTraffic="true">
cf) JSON 객체 정보
{ <속성이름>:<속성값>, <속성이름>:<속성값> }
배열의 경우엔 대괄호 사용, 배열 안에 객체 들어간 경우 중괄호고 구분된 객체들을 콤마로 이어줌!
[{ <속성이름>:<속성값>, <속성이름>:<속성값> }]
-> 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) //여기!
-> 버튼 눌렀을때 응답오도록 만들어보자!
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등 요청방식,요청 보낼 사이트 주소, 응답처리할 람다식 , 에러발생시 람다식)
requestQueue?.add(request) -> 요청 객체를 축한다.
cf) setShouldCache 는 캐싱(=이미 받은 응답 재사용)을 할지 여부 결정
일단 결과 받아오는 것만 확인하려고 했기 때문에 레이아웃이나 그런건 없다..!^^