ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [안드로이드] Retrofit PUT, DELETE 방식 간단 예제
    안드로이드(java)/기능 관련 2019. 11. 28. 12:46

    이번에는 put, delete 요청하는 방법을 연습해보겠습니다.

     

    [완성 소스 코드] https://github.com/dailyshow/retrofitPUTDELETE

     

     put 은 기존에 있던 내용을 수정할 때 사용합니다.

    delete는 내용을 삭제할 때 사용합니다.

     

    PUT 방식을 먼저 보겠습니다.

     

    <JsonPlaceHolderAPI.java>

    1
    2
    3
    4
    public interface JsonPlaceHolderAPI {
        @PUT("posts/{id}")
        Call<Post> putPost(@Path("id"int id, @Body Post post);
    }
    cs

     

    <MainActivity.java>

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    public class MainActivity extends AppCompatActivity {
        private final String BASEURL = "http://jsonplaceholder.typicode.com/";
        private TextView textViewResult;
     
        private JsonPlaceHolderAPI jsonPlaceHolderAPI;
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
     
            textViewResult = findViewById(R.id.text_view_result);
     
            Retrofit retrofit = new Retrofit.Builder()
                    .baseUrl(BASEURL)
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();
     
            jsonPlaceHolderAPI = retrofit.create(JsonPlaceHolderAPI.class);
     
            updatePost();
        }
     
        public void updatePost(){
            Post post = new Post(10null"새로운 내용");
     
            Call<Post> call = jsonPlaceHolderAPI.putPost(5, post);
     
            call.enqueue(new Callback<Post>() {
                @Override
                public void onResponse(Call<Post> call, Response<Post> response) {
                    if (!response.isSuccessful()){
                        textViewResult.setText("code: " + response.message());
                        return;
                    }
     
                    Post postResponse = response.body();
     
                    String content = "";
                    content += "Code : " + response.code() + "\n";
                    content += "Id : " + postResponse.getId() + "\n";
                    content += "User Id : " + postResponse.getUserId() + "\n";
                    content += "Title : " + postResponse.getTitle() + "\n";
                    content += "Text : " + postResponse.getText() + "\n";
     
                    textViewResult.setText(content);
                }
     
                @Override
                public void onFailure(Call<Post> call, Throwable t) {
                    textViewResult.setText(t.getMessage());
                }
            });
        }
    }
    cs

    <실행결과>

     

    code 번호가 200번이 나왔네요. 정상적으로 처리되었음을 확인할 수 있습니다.

    userid가 10 번인곳에 텍스트항목을 새로운 내용 이란 글로 변경하였습니다.

     

     

    DELETE 방식에 대해서 확인해보겠습니다.

     

    <JsonPlaceHolderAPI.java>

    1
    2
    3
    4
    public interface JsonPlaceHolderAPI {
        @DELETE("posts/{id}")
        Call<Void> deletePost(@Path("id"int id);
    }
    cs

    <MainActivity.java>

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    public class MainActivity extends AppCompatActivity {
        private final String BASEURL = "http://jsonplaceholder.typicode.com/";
        private TextView textViewResult;
     
        private JsonPlaceHolderAPI jsonPlaceHolderAPI;
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
     
            textViewResult = findViewById(R.id.text_view_result);
     
            Retrofit retrofit = new Retrofit.Builder()
                    .baseUrl(BASEURL)
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();
     
            jsonPlaceHolderAPI = retrofit.create(JsonPlaceHolderAPI.class);
     
            deletePost();
        }
     
        private void deletePost() {
            Call<Void> call = jsonPlaceHolderAPI.deletePost(5);
     
            call.enqueue(new Callback<Void>() {
                @Override
                public void onResponse(Call<Void> call, Response<Void> response) {
                    if (!response.isSuccessful()) {
                        textViewResult.setText("code: " + response.message());
                        return;
                    }
                    String content = "";
                    content += "code: " + response.code()+"\n";
                    content += "정상적으로 삭제되었습니다.";
     
                    textViewResult.setText(content);
     
                }
     
                @Override
                public void onFailure(Call<Void> call, Throwable t) {
                    textViewResult.setText(t.getMessage());
                }
            });
        }
    }
    cs

    <결과 화면>

    code 번호가 200번이 나왔습니다. 제대로 실행되었네요.

     

    전체 소스 코드는 맨 위에 있습니다.

     

    이상으로 Retrofit의 전체적으로 간략한 사용법을 정리해보았습니다.

     

     

    댓글

Designed by Tistory.