여러분, Volley라고 들어봤어요? (젠장)
728x90
반응형



외국 PG(Payment gateway)를 안드로이드 앱에 넣으려고 하는데

테스트 소스에 통신하는 파트에 volley라는 것이 보였다.

볼리? 발리?

okhttp가 아니라?

이 기회에 까 보자.



참고 링크





설치 방법이나 개념 설명은 위 링크에도 충분히 찾을 수 있다.

개인적인 관심사 위주로 정리를 해보자면...



1. StringRequest와 같은 Request 클래스를 사용한다.


request 객체는 RequestQueue에 담아서 서버에 요청한다.

이때 StringRequest의 매개변수에는 4개의 서로 다른 형태의 정보(콜백 포함)를 담는다.

  1. HTTP method
  2. Server URL
  3. Result Callback
  4. Error Callback


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
StringRequest stringRequest = new StringRequest(Request.Method.POST, Constants.JSON_URL,
        new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
 
                LoadingDialog.cancelLoading();
 
                if (response != null && !response.equals("")) {
                    vJsonStr= response;
                    new GetData().execute();
                } else {
                    Log.e("ServiceHandler""Couldn't get any data from the url");
                }
            }
        },
 
        new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                LoadingDialog.cancelLoading();
            }
        }
)
 
 
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
cs


newRequestQueue 메소드 내부에 이미 queue.start()가 있기 때문에 담는 것으로 충분하다.

다만... 내부에서 어떻게 움직이는지는 나도 모르겠다.

누가 알면 알려주...세요.

newRequestQueue에 대한 추가 정보는 여기를 참고하면 좋다.




2. getParams() 역할


http method가 Post인 경우로 생각해보면 된다.

StringRequest 클래스에 담을 데이터를 getParams로 담는다고 보면 된다.

Map 객체에 담아서 서버로 보내준다.


1
2
3
4
5
6
7
@Override
protected Map<StringString> getParams() {
    Map<StringString> params = new HashMap<StringString>();
    params.put(Params.COMMAND, "getJsonDataVault");
    // 생략
    return params;
}
cs




이거말고 확인할게 많은데

그건 진짜 제대로 활용할때 하는걸로. 

(귀찮은거 아님. 진짜 아님.)





728x90
반응형