iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 18
0
Mobile Development

iOS Developer Learning Android系列 第 18

iOS Developer Learning Android. Lesson 18 - call API (使用超越AFNetworking的網路套件)

這算是本系列介紹的第一個套件:就是大名鼎鼎的OkHttp
為什麼說超越AFNetworking呢?(現在還有人知道AFNetworking嗎?)
因為星星比較多啦XD
截稿時間OK以三萬四小勝AF的三萬二
兩大手機平台最多人用的套件都是網路相關
可見跟網路相關的問題多讓開發者苦惱(或者說因為網路功能幾乎是每個APP必備的)
這時離題一下,緊急置入iOS界人稱"喵神"的王巍大大,日前來台北分享關於網路的議程
網路難,難於上青天 - 用部件化的方式簡化網路程式設計

本日效果

條列重點

  1. manifest要加<uses-permission android:name="android.permission.INTERNET" />

    不然會閃退
  2. 不要直接用官方的範例
OkHttpClient client = new OkHttpClient();

String run(String url) throws IOException {
  Request request = new Request.Builder()
      .url(url)
      .build();

  try (Response response = client.newCall(request).execute()) {
    return response.body().string();
  }
}


不然會閃退(應該是我語法不會用,哪裡搞錯了)

  1. 不要在callback裡直接動UI

    不然會閃退(請用runOnUiThread包起來)

  2. 由三大部分OkHttpClient, Request, Call組成一次網路請求

        FormBody body = new FormBody.Builder()
                .add("email", String.valueOf(editTextEmail.getText()))
                .add("password", String.valueOf(editTextPassword.getText()))
                .build();

        Request request = new Request.Builder()
                .url(url)
                .post(body)
                .build();

        Call call = client.newCall(request);

        call.enqueue(new Callback()
        {
            @Override
            public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException
            {
                //成功了?
            }
            @Override
            public void onFailure(@NotNull Call call, @NotNull IOException e)
            {
                //失敗了?
            }
        });

參考資料

也是鐵人賽的文章

今天的範例程式

可以去 https://github.com/mark33699/IDLA 看一下順便給顆⭐️


如果你喜歡我的影片別忘了按讚分享加訂閱,開啟紅色的小鈴鐺,我們明天見~


上一篇
iOS Developer Learning Android. Lesson 17 - BottomNavigationView + Fragment (人家的Navigation是長在下面的喔~)
下一篇
iOS Developer Learning Android. Lesson 19 - JSON轉物件 (以Google爸爸的GSON為例)
系列文
iOS Developer Learning Android30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
MarkFly~
iT邦新手 4 級 ‧ 2019-10-04 02:19:34





我要留言

立即登入留言