- 인터넷 설명 -
- 내 설명 -
웹으로,HTTP라는 프로토콜을 이용해서 요청을 하게 되면,
웹서버쪽으로 요청이 들어 가는 거죠!
그리고,
응답을 받을 수가 있습니다.
그리고, 그걸
HttpURLConnection이라고 하는 것을 이용해서, 웹으로 "요청"을 하고, "응답"을 받는 것을 만들어 볼 수가 있습니다.
근데, 위에처럼 하면,,,,,,, 많은 양의 코드들을 적어야하고, 스레드라는 것도 반드시 네트워킹을 할려면 사용해야 하니깐,,,
이 스레드를 가지고 네트워킹, 즉 요청을 하게되고, 응답을 받으면, 다시 "핸들러"를 이용해서 UI를 업데이트를 해줘야하는 경우가 생기기떄문이다.........
그래서, 너무 복잡하고, 코드양이 너무너무너무 많아지기 때문에,,
단순화 시키기 위해서
Volley라는 "라이브러리"를 사용해서 할 수 있습니다. 이전에는 OkHttp를 사용 했었습니다.
근데 요즘에는 Volley를 많이 사용 하다고 하네요!!
근데 더 단순화게 된게 Volley 입니다.!
Volley는 구글에서 제공을 하고 있고,
많은 앱들이 사용하고 있습니다.
가장 단순하게 사용 할 수가 있습니다.
장점이
1.코드양이 적습니다.
2.스레드를 신경쓰지 안습니다.
2개의 장점이 있습니다.
월래 작업 할 때, 스레드를 신경을 써서 작업을 한다면,
어느 부분이 "스레드" 아닌지, 아니면 어느 부분이 "메인스레드"로 와서 업데이트를 할 수 있는 부분인지를 구분을 해야하는데,,,,,,,,,,,,,,
근데 Volley는 이것들을 스레드를 내부에서 처리하기 때문에,
응답을 받으면 바로 UI를 업데이트를 할 수 있게, 즉 "메인스레드"에서 동작 할 수 있게 되어 있습니다.!!
만들어 보겠습니다.
- volley를 쓰는 방법 설명 -
- volley를 쓰는 방법 코드 -
1) 추가
2) RequestQueue 객체를 초기화해서 넣어두는 방법이 있습니다.
public static RequestQueue requestQueue; <- static으로 해야지 어디서든 접근 할 수 있습니다.
3)
GET 방식(밑에그림)
GET방식으로 되어있는데, GET이 아니라 POST방식으로 파라미터를 넣고 싶다라고 했을 때, (밑에그림)
추가
AppHelper.requestQueue.add(request); 이렇게 넣어줄때, volley라는게 내부에서 캐싱을 해줘버립니다..
(캐싱 = "한번보내고, 받은 응답결과가 있으면, 그 다음에 보냈을 때, 이전께 있으면 이전껄 보여주는거 입니다.)
그래서 이렇게 하지말고, 매번 받은 결과를 그대로 보여달라고 할려면,
AppHelper.requestQueue.add(request); 하기전에
request(StringRequest 만든거)객체에다가 request.setShouldCache(false); 이렇게 해주면
이전결과가 있더라고 해도
새로 요청을 해서 응답을 보여주게 됩니다
4) 권한 주어야 됩니다
5) 만약 이런 에러가 뜨면
-> "java.io.ioexception cleartext http traffic to not permitted"
이 게시글 참조 : [Android] 30-3.Volley 사용시 에러 뜨면 -참고- (안드로이드 http 프로토콜 접속 시 예외발생 조치)
6)
실행해보겠습니다. 결과가 이렇게 나옵니다.
- 사용한 코드 전체 -
0) app
1) AnroidManifest.xml
2) activity_main.xml
3) AppHelper.java
4) MainActivity.java
'■ Android > Tip' 카테고리의 다른 글
[Android] java.io.ioexception cleartext http traffic to not permitted 해결방법 (0) | 2020.02.14 |
---|---|
[Android] 30-3.Volley 사용시 에러 뜨면 -참고- (안드로이드 http 프로토콜 접속 시 예외발생 조치) (0) | 2020.02.14 |
[Android] 30 - 2.웹으로 요청하기(HttpURLConnection) (0) | 2020.02.14 |
[Android] 30 - 1.HTTP 이해하기 (0) | 2020.02.14 |
[Android] 20 - 3.소켓(핸들러 사용) - "서버"코드를 [서비스]로 변경 (0) | 2020.02.13 |