- 인터넷 설명 -

 

 

 

 

 

 

- 내 설명 -

웹으로,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