1. 程式人生 > >Android面試題:Retrofit

Android面試題:Retrofit

相關視訊:

Retrofit網路庫

相關文章:

你真的會用Retrofit2嗎?Retrofit2完全教程

用 Retrofit 2 簡化 HTTP 請求

一、簡介:

Retrofit 是基於OKhttp網路請求框架的二次封裝,本質是OKhttp。所以說Retrofit並不是一個網路框架、它只是一個網路框架封裝。

Android AsyncHttp 基於HttpClient ,已經停止維護,Android5.0之後不再使用HttpClient,不推薦應用。

Volley 是google推出的基於HttpUrlConnection 的適合輕量級資料傳輸的網路庫,不適合大檔案的上傳和下載。

Retrofit優點:API設計簡潔易用、註解化配置高度解耦、支援多種解析器、支援Rxjava。

二、Retrofit常用引數註解:

@GET、@POST:確定請求方式
@Path:請求URL的字元替代
@Query:要傳遞的引數
@QueryMap:包含多個@Query註解引數
@Body:新增實體類物件
@FormUrlEncoded:URL編碼

三、Retrofit使用:

1、Retrofit開源庫、OkHttp網路庫、資料解析器整合、註冊網路許可權;

2、建立介面設定請求型別與引數:
    新建UserInfoModel類和UserMgrService介面
    @GET("login")
    public Call<UserInfoModel> login(@Query("username") String username, @Query("pwd") String pwd);

3、建立Retrofit物件、設定資料解析器
    Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(Api.API_BASE)
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .addConverterFactory(GsonConverterFactory.create())
                .build();

4、生成介面物件:
    UserMgrService service = retrofit.create(UserMgrService.class);  

5、呼叫介面方法返回Call物件:
    Call<UserInfoModel> call = service.login("zhangsan","123456");

6、傳送請求(同步、非同步)
    同步:呼叫Call物件的execute(),返回結果的響應體;
    非同步:呼叫Call物件的enqueue(),引數是一個回撥;

7、處理返回資料