Android面試題:Retrofit
相關視訊:
相關文章:
一、簡介:
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、處理返回資料