iT邦幫忙

2023 iThome 鐵人賽

DAY 20
0
Mobile Development

Android Studio初學系列 第 20

Android Studio初學 DAY20 Retrofit抓取API資料

  • 分享至 

  • xImage
  •  

Retrofit 是一個廣泛使用的 Android 庫,用於發送網絡請求和處理 API 數據。它簡化了在 Android 應用程序中進行網絡請求的過程,並且與 OkHttp 配合使用,提供了高效的網絡請求和響應處理
今天以https://jsonplaceholder.typicode.com/ 的posts來作範例。
這是我們要抓的資料

中括號跟大括號抓資料時分別要用List跟Class

首先先到build.gradle 文件中添加以下依賴

implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'

創立一個Interface接口

public interface PostsApi {
        @GET("posts")
        Call <List<PostResponse>> getPosts(); //因為最外層是list所以這邊我包一層List
}

創立一個class,裡面放要抓的資料名稱


    public int getUserId() {
        return userId;
    }

    public int getId() {
        return id;
    }

    public String getTitle() {
        return title;
    }

    public String getBody() {
        return body;
    }
}

主程式

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 創建Retrofit用於網路請求
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("https://jsonplaceholder.typicode.com/")
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        // 創建 Postapi接口
        PostsApi postsApi = retrofit.create(PostsApi.class);
        // 創建一個GET請求
        Call<List<PostResponse>> call = postsApi.getPosts();
        call.enqueue(new Callback<List<PostResponse>>() {
            @Override
            public void onResponse(Call<List<PostResponse>> call, Response<List<PostResponse>> response) {
                //成功時執行
                Log.d("Post","id: " + response.body().get(0).getId());
                Log.d("Post","userid: " + response.body().get(0).getUserId());
                Log.d("Post","title: " + response.body().get(0).getTitle());
                Log.d("Post","body: " + response.body().get(1).getBody());
            }

            @Override
            public void onFailure(Call<List<PostResponse>> call, Throwable t) {
                //失敗時執行                
                Log.d("Post","失敗");
            }
        });
    }
}

這是基本的抓資料方法,今天就介紹到這,謝謝/images/emoticon/emoticon08.gif


上一篇
Android Studio初學 DAY19 Checkbox
下一篇
Android Studio初學 DAY21 Thread線程
系列文
Android Studio初學30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言