[Original Post]

https://www.itsalif.info/content/android-volley-tutorial-http-get-post-put


[Download JAR]

http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.mcxiaoke.volley%22


[GitHub]

https://github.com/mcxiaoke/android-volley


----------

Google released Android Volley Library around May/June 2013, which has been internally used by Google for some time. It is supposed to provide Fast Networking Operations and also takes care of Threads nicely. If you are unfamiliar with Volley, please see Google I/O 2013 Video

Unfortunately, there is almost no documentation on Volley. So, I put together code snippets on how to make Volley HTTP Requests (GET, POST, PUT, DELETE).


[Setting up Android Volley Library]

Setting up is straight-forward. Clone the Volley project from here and then import the Volley into project. A comprehensive tutorial on setting up can be found here.


[Key Classes of Android Volley]

The following are the Key classes of Volley:

– RequestQueue: A Queue containing the Network/HTTP Requests that needs to be made.

– Request: A Base Class which contains Network related information like HTTP Methods.

– StringRequest: HTTP Request where the response is parsed a String. View Source

– JsonObjectRequest: HTTP Request where the response is JSONObject. View Source



[Getting Started with Android Volley]

At first make a RequestQueue, which holds the HTTP Requests. View Source. Ideally, the RequestQueue should be made once and then referred to it across the Application. The Application is an ideal place to make it.

--------------

RequestQueue queue = Volley.newRequestQueue(this);  // this = context



[Making GET Requests]

Making GET Requests is simple. The example below uses JsonObjectRequest. It prepares a JsonObjectRequest and

passes and then adds it to RequestQueue. The JsonObject accepts 4 parameters (Http method, Url, Json values, Response Listener – Invoked on success, Error Listener – Invoked on failure).

-------------

final String url = "http://httpbin.org/get?param1=hello";

 

// prepare the Request

JsonObjectRequest getRequest = new JsonObjectRequest(Request.Method.GET, url, null,

    new Response.Listener<JSONObject>() 

    {

        @Override

        public void onResponse(JSONObject response) {   

                        // display response     

            Log.d("Response", response.toString());

        }

    }, 

    new Response.ErrorListener() 

    {

         @Override

         public void onErrorResponse(VolleyError error) {            

            Log.d("Error.Response", response);

       }

    }

);

 

// add it to the RequestQueue   

queue.add(getRequest);



[Making POST Requests]

For a POST request, to add form parameters/values, the getParams() method needs to be overridden and a Map needs to be returned.

----------------

url = "http://httpbin.org/post";

StringRequest postRequest = new StringRequest(Request.Method.POST, url, 

    new Response.Listener<String>() 

    {

        @Override

        public void onResponse(String response) {

            // response

            Log.d("Response", response);

        }

    }, 

    new Response.ErrorListener() 

    {

         @Override

         public void onErrorResponse(VolleyError error) {

             // error

             Log.d("Error.Response", response);

       }

    }

) {     

    @Override

    protected Map<String, String> getParams() 

    {  

            Map<String, String>  params = new HashMap<String, String>();  

            params.put("name", "Alif");  

            params.put("domain", "http://itsalif.info");

             

            return params;  

    }

};

queue.add(postRequest);



[Making PUT Requests]

Creating PUT Request is same as POST basically.

---------------

url = "http://httpbin.org/put";

StringRequest putRequest = new StringRequest(Request.Method.PUT, url, 

    new Response.Listener<String>() 

    {

        @Override

        public void onResponse(String response) {

            // response

            Log.d("Response", response);

        }

    }, 

    new Response.ErrorListener() 

    {

         @Override

         public void onErrorResponse(VolleyError error) {

                         // error

             Log.d("Error.Response", response);

       }

    }

) {

 

    @Override

    protected Map<String, String> getParams() 

    {  

            Map<String, String>  params = new HashMap<String, String> ();  

            params.put("name", "Alif");  

            params.put("domain", "http://itsalif.info");

             

            return params;  

    }

 

};

 

queue.add(putRequest);



[Making DELETE Requests]

------------

url = "http://httpbin.org/delete";

StringRequest dr = new StringRequest(Request.Method.DELETE, url, 

    new Response.Listener<String>() 

    {

        @Override

        public void onResponse(String response) {

            // response

            Toast.makeText($this, response, Toast.LENGTH_LONG).show();

        }

    }, 

    new Response.ErrorListener() 

    {

         @Override

         public void onErrorResponse(VolleyError error) {

             // error.

              

       }

    }

);

queue.add(dr);



저작자 표시 비영리 변경 금지
신고

WRITTEN BY
빅터크룸
머 먹고 사냐.....

받은 트랙백이 없고 , 댓글이 없습니다.
secret

https://services.gradle.org/distributions/


.....

저작자 표시 비영리 변경 금지
신고

WRITTEN BY
빅터크룸
머 먹고 사냐.....

받은 트랙백이 없고 , 댓글이 없습니다.
secret

https://services.gradle.org/distributions/


  1. Right click on start-button and open "System"
  2. Go to Advanced system settings on the left side
  3. Click the button "Environment Variables ..."
  4. In System Variables, click "New..."
  5. New Variable Name: _JAVA_OPTIONS
  6. New Variable Value: -Xmx1024M
  7. Click OK
  8. Restart Window Command or Program


Gradle will detect this option as below.

_JAVA_OPTIONS=-Xmx1024M


저작자 표시 비영리 변경 금지
신고

WRITTEN BY
빅터크룸
머 먹고 사냐.....

받은 트랙백이 없고 , 댓글이 없습니다.
secret

Version 1.5 - http://victor8481.tistory.com/643

Version 1.4 - http://victor8481.tistory.com/633

Version 1.3 - http://victor8481.tistory.com/615

Version 1.2 - http://victor8481.tistory.com/553

Version 1.1 - http://victor8481.tistory.com/432

Version 1.0 - http://victor8481.tistory.com/286


소스 프로젝트 명 : Victor MMS Sender

Victor MMS Sender는 몇몇 Open Source를 사용하여 만든, 

안드로이드에서 MMS 전송 기능을 포함하는 Application을 만들 수 있게 해주는 모듈입니다.


1. History

   1-1. Version 1.0

Library for easily sending SMS and MMS for Android devices (Open Source)


위의 방법을 이용하는 경우 초기 개발 시 아래와 같은 문제점이 존재 하였습니다.

문제 1. 메시지 전송 시 Message Body와 Image가 전송되지 않고, Subject만 전달 됨.

- 원   인 : Victor MMS Sender에서는 해당 부분이 
             국내와 해외의 PDU Format 방식이 다르게 운영되기 때문

- 해결책 : 해당 Format 방식을 국내 방식으로 변경 후 정상 발송

- 검증 기기

  > 자체 검증 기기 (4.0 이상 버전)

     삼   성 : 겔럭시 노트1, 노트 2, 노트 3, 노트 4, 겔럭시 S2, S3, S4, S5, 

     엘   지 : G2, G3, G3 스타일러스, G3 비트, Gpro, Gpro lite, Gpro2, 캣6, 뷰2, 
                   옵티머스 L5 등 해외 폰 다수

     스카이 : 베가 레이서, R3, LTE, 넘버 6, 아이언, 

     구   글 : 넥서스 4, 5 (JB Version 부터 Lollipop Version까지)

  > 다수 업체에서 진행을 하였으나, 어떠한 기종이였는지는 확인 안 됨.


문제 2. 3.0 미만 버전에서는 어플이 죽는 문제 확인


1-2. Version 1.1

 문제 2. 3.0 미만 버전에서는 어플이 죽는 문제 수정 및 정상 전송

 - 원   인 : PDU 전송을 위해 매커니즘으로 3.0부터 새로 들어가 기능으로 인해서 
              Class Not Found로 어플이 죽음

 - 해결책 : 3.0 버전에서는 전송 방식을 다르게 변경하여 전송 성공 (비 공개)

 - 검증 기기

   > 자체 검증 기기

      스카이 : 베가 IM-A650S(2.2.1), 겔럭시 노트 1 (2.3)

       지금 현재에는 2.3 버전을 사용하는 기종을 구하기 쉽지 않아, 한 대 밖에 확인이 안됨.

       추후 기종이 확보대는 대로 확인 예정.


1-3. Version 1.2

 동영상 및 보이스, VCard, VCalender 첨부 기능 추가 및 안정성 향상


1-4. Version 1.3

- 안드로이드 6.0 (마시멜로우) 버전 검증 완료 - 완벽 지원

- 코드 안정화 작업

- 추가 검증 진행

  거래 업체를 통해서 LGE Lab에서 LGE 기반 단말기들의 대부분 모델에서 검증 진행 및 Pass
  LG-F310L (GX), LG-F300L (Vu3), LG-F240L (옵티머스 G Pro), LG-F340L (G Flex), 
  LG-430L (GX2), LG-F490L (G3 Screen), LG-F350L (G Pro 2), 
LG-580L (젠틀), LG-F620L (CLASS),
  LG-F400L (G3), LG-F470L (G3 Beat), LG-F510L (G Flex2), LG-LU6500 (옵티머스 Q2), LG-F500L (G4), 
  LG-F540L (Volt)

- 라이브러리 Type의 Function 추가 
  이미지와 수신자의 정보에 따라서 일대일 / 일대다 / 다대일 / 다대다로 전송 가능한 API가 추가되었으며, 
  웹 상의 URL 주소 추가 만으로도 Image 첨부 전송이 가능한 기능이 추가되었습니다.


1-5. Version 1.4

- GIF 전송 기능 추가

- 코드 안정화 작업

- 추가 검증 진행 - G5 / 겔럭시 Note 5 / 겔럭시 S7 / 겔럭시 S7 엣지 등 최신 기종


1-6. Version 1.5

- 안드로이드 7.0(누가) 버전 검증 완료 - 완벽 지원

- 이미지 3장까지 Slide 방식이 아닌, 개별 화면으로 전송 가능하게 추가

- 코드 안정화 작업

- 추가 검증 진행 (겔럭시 S7 EDGE 누가 버전 - 통신 3사 검증 완료 / LG G6 누가 버전 - 통신 3사 검증 완료)

samsung | SM-N920L | Normal program | Center-weighted average | 1/60sec | F/1.9 | 0.00 EV | 4.3mm | ISO-100 | Flash did not fire | 2016:07:28 09:54:39

samsung | SM-N920L | Normal program | Center-weighted average | 1/60sec | F/1.9 | 0.00 EV | 4.3mm | ISO-100 | Flash did not fire | 2016:07:28 09:55:35

N-OS 관련해서는 http://victor8481.tistory.com/642에 포스팅 해 놓았습니다.


소스는 현재 판매 중이므로, 관련 사항에 대한 가이드 또는 Open 하지 않고 있습니다.

소스 구현 가이드에 대한 메일 또는 쪽지에 대한 회신을 드리지 않습니다.

이점 양해 부탁 드리겠습니다.


문의 메일 : victor8481@hotmail.com

저작자 표시 비영리 변경 금지
신고

WRITTEN BY
빅터크룸
머 먹고 사냐.....

받은 트랙백이 없고 , 댓글  13개가 달렸습니다.
  1. 비밀댓글입니다
  2. 비밀댓글입니다
  3. 비밀댓글입니다
  4. 비밀댓글입니다
  5. 비밀댓글입니다
  6. 안녕하세요 예전에 메일로 문의드렸는데 지금도 판매하고 계신죠?
    연락 번호가 없어서 글로만 남김니다.
    연락가능하시면 연락부탁합니다.
    010-3333-0696
secret

Configure > Project Defaults > Project Structure



SDK Location > JDK Location > Set JAVA JDK upper 1.8 version



저작자 표시 비영리 변경 금지
신고

WRITTEN BY
빅터크룸
머 먹고 사냐.....

받은 트랙백이 없고 , 댓글이 없습니다.
secret