Retrofit入門篇——how to use

作為一名Android開發(fā)者,如果你沒有聽說過Retrofit網(wǎng)絡請求框架,那真的是太不應該了。好吧,這篇文章的目的就是普及基本知識了。
首先,Retrofit是由Square開發(fā)出來的一套網(wǎng)絡請求底層框架,可以理解為OKHttp的加強版(PS:OKHttp也是他家的)。本質上網(wǎng)絡請求的工作是由OkHttp完成,而 Retrofit 僅負責網(wǎng)絡請求接口的封裝。它的一個最大的特點是通過大量的設計模式對代碼進行解耦,同時支持同步、異步和RxJava,以及可以配置不同的反序列化工具來解析數(shù)據(jù),如json、xml等

簡單介紹完Retrofit之后,想必你還是一頭霧水對吧,下面通過一個簡單的小例子來講解一下。

首先,你要進行網(wǎng)絡請求,必須要有對應的服務器對吧,但是呢,要移動端開發(fā)人員去搭建一個后臺環(huán)境也太麻煩了,于是乎可以利用SpringBoot快速搭建一個本地服務器來進行數(shù)據(jù)交互.

  • IntelliJ IDEA直接創(chuàng)建一個Spring Assistant項目(這個應該不用教了吧~實在不會可以google一下)
public class Response<T> {
    private int code;
    private int count;
    private String msg;
    private T data;

    public Response(int code, int count, String msg, T data) {
        this.code = code;
        this.count = count;
        this.msg = msg;
        this.data = data;
    }

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public int getCount() {
        return count;
    }

    public void setCount(int count) {
        this.count = count;
    }
}
@RestController
public class HelloController {
    @RequestMapping("getAuthCode")
    public Response getAuthCode(String phone, int type) {
        return new Response(0,0,"succes",phone+",i know you want authcode!");
    }
}

直接運行SpringXXXApplication,后臺就成功運行了

  • Android Studio新建項目

1.配置Gradle,添加依賴

    // Okhttp
    implementation 'com.squareup.okhttp3:okhttp:3.7.0'
    // Retrofit
    implementation 'com.squareup.retrofit2:retrofit:2.1.0'

別忘了要在AndroidManifest申請網(wǎng)絡權限喲

    <uses-permission android:name="android.permission.INTERNET"/>

2.新建一個接口ApiService.java,通過注解的方式配置網(wǎng)絡請求參數(shù)

public interface ApiService {
    @GET("getAuthCode")
    Call<ResponseBody> getAuthCode(@Query("phone") String phone, @Query("type") int type);
}

3.在MainActivity里面進行網(wǎng)絡請求

private void requestRetrofit() {
        Retrofit retrofit = new Retrofit.Builder().baseUrl("http://192.168.20.227:8080/").build();
        ApiService apiService = retrofit.create(ApiService.class);
        Call<ResponseBody> call = apiService.getAuthCode("183****2568",0);
        call.enqueue(new Callback<ResponseBody>() {
            @Override
            public void onResponse(Call<ResponseBody> call, retrofit2.Response<ResponseBody> response) {
                try {
                    Log.e("MainActivity",response.body().string().toString());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

            @Override
            public void onFailure(Call<ResponseBody> call, Throwable t) {
                t.printStackTrace();
            }
        });
    }

okay,這樣就可以直接運行項目了,你會看到如下log

E/MainActivity: {"code":0,"count":0,"msg":"succes","data":"183****2568,okay,i know you want authcode!"}

這樣就完成了最基本的Retrofit網(wǎng)絡請求了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 目錄介紹 1.首先回顧Retrofit簡單使用方法 2.Retrofit的創(chuàng)建流程源碼分析2.1 Retrofit...
    楊充211閱讀 1,171評論 0 16
  • 文章來自:https://blog.csdn.net/carson_ho/article/details/7373...
    8ba406212441閱讀 867評論 2 12
  • 前言 注解式的框架非常火,注解以其輕量,簡潔等特性被人們所喜愛者,關鍵是它解藕。網(wǎng)絡請求的框架非常多,比較受歡迎的...
    薩達哈魯醬閱讀 627評論 0 5
  • 我開始恐婚??只榈脑?,是因為我怕他給不了我想要的那種生活。我怕突然多一個人生活,會打亂我原有的生活。會把我疊好...
    販夢俗人閱讀 172評論 0 1
  • 楊慧霞 洛陽 焦點解決講師二期班成員 堅持分享835天《焦點解決》 今天陪女兒看了場電影<捉妖記>,內容大...
    yhx慧心慧語閱讀 212評論 0 0

友情鏈接更多精彩內容