Android中Retrofit的封裝使用
一、大致介紹:
-
Retrofit:Square 基於OkHttp 實現的一款針對Android 網路請求的框架
-
OkHttp: Square 開源的網路請求庫
-
RxJava:使得非同步操作變得非常簡單
二、功能分離
-
Retrofit 針對請求的資料和請求的結果,使用介面的方式呈現
-
OkHttp 針對請求的過程
-
RxJava 針對非同步,各種執行緒之間的切換
三、使用過程
一、新增依賴庫
//RxJava
compile 'io.reactivex:rxjava:1.1.3'
//RxAndroid
compile 'io.reactivex:rxandroid:1.1.0'
//retrofit
compile 'com.squareup.retrofit2:retrofit:2.0.0'
//retrofit依賴Gson
compile 'com.squareup.retrofit2:converter-gson:2.0.0'
//OkHttp
compile 'com.squareup.okhttp3:okhttp:3.2.0'
//retrofit依賴RxJava
compile 'com.squareup.retrofit2:adapter-rxjava:2.0.0'
二、建立單例Retrofit介面管理類
import java.util.concurrent.TimeUnit;
import okhttp3.OkHttpClient;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
public class RetrofitManager {
// 請求的URL字首
private static final String BASEURL = "http://192.168.42.48:9000/";
private static Retrofit retrofit;
private static RetrofitManager retrofitManager;
//提供共有的方法供外界訪問
public static RetrofitManager newInstance() {
if (retrofitManager == null) {
synchronized (RetrofitManager.class) {
retrofitManager = new RetrofitManager();
}
}
return retrofitManager;
}
//通過動態代理生成相應的Http請求
public <T> T creat(Class<T> t) {
return retrofit.create(t);
}
//構造方法私有化
private RetrofitManager() {
retrofit = getRetrofit();
}
//構建Ok請求
private OkHttpClient getOkHttpClient() {
return new OkHttpClient.Builder()
.connectTimeout(5000, TimeUnit.MILLISECONDS)
.build();
}
//構建Retrofit
private Retrofit getRetrofit() {
return new Retrofit.Builder()
.baseUrl(BASEURL)
.client(getOkHttpClient())
.addConverterFactory(GsonConverterFactory.create())
// .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
}
}
三、建立介面類
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Path;
// 對應著服務端的介面
public interface UserService {
// 如果後端是@RequestParam接受引數,加上@FormUrlEncoded
@FormUrlEncoded
// 請求路徑前不能加 /
@POST("server/user/login")
Call<Rs<User>> login(@Field("username") String username, @Field("password") String password);
//如果後端是@RequestBody接受引數,去除@FormUrlEncoded
@POST("server/user/register")
Call<Rs> register(@Body User user);
// 使用resultful風格請求
@GET("server/user/getById/{id}")
Call<Rs<User>> getById(@Path("id") String id);
@POST("server/user/updateById")
Call<Rs> updateById(@Body User user);
}
四、呼叫過程
// 呼叫註冊介面除錯介面
RetrofitManager.newInstance()
.creat(UserService.class)
.login(username,password)
.enqueue(new Callback<Rs<User>>() {
@Override
public void onResponse(Call<Rs<User>> call, Response<Rs<User>> response) {
LogUtils.i("呼叫介面成功");
if (response.body().getCode() == 20000){
Gson gson = new Gson();
String json = gson.toJson(response.body().getData());
System.out.println(json);
SPUtils.getInstance().put("user",json);
ToastUtils.showShort("成功!");
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
startActivity(intent);
} else {
ToastUtils.showShort("異常!");
}
}
@Override
public void onFailure(Call<Rs<User>> call, Throwable t) {
LogUtils.e("呼叫介面異常");
ToastUtils.showShort("異常!");
}
});
相關文章
- Android實現Rxjava2+Retrofit完美封裝AndroidRxJava封裝
- Retrofit的簡單封裝封裝
- 【Android架構】基於MVP模式的Retrofit2+RXjava封裝(一)Android架構MVP模式RxJava封裝
- Kotlin中Retrofit網路請求簡單封裝Kotlin封裝
- Android RxJava系列三: 與Retrofit2結合使用和封AndroidRxJava
- 【Android架構】基於MVP模式的Retrofit2+RXjava封裝之多Url(七)Android架構MVP模式RxJava封裝
- retrofit如何配合Rxjava封裝程式碼RxJava封裝
- Android Retrofit原始碼解析:都能看懂的Retrofit使用詳解Android原始碼
- 【Android架構】基於MVP模式的Retrofit2+RXjava封裝之檔案下載(二)Android架構MVP模式RxJava封裝
- 【Android架構】基於MVP模式的Retrofit2+RXjava封裝之斷點下載(五)Android架構MVP模式RxJava封裝斷點
- 【Android架構】基於MVP模式的Retrofit2+RXjava封裝之檔案上傳(三)Android架構MVP模式RxJava封裝
- 【Android架構】基於MVP模式的Retrofit2+RXjava封裝之常見問題(四)Android架構MVP模式RxJava封裝
- vue中axios的使用與封裝VueiOS封裝
- Retrofit + Kotlin + MVVM 的網路請求框架的封裝嘗試KotlinMVVM框架封裝
- 【Android架構】基於MVP模式的Retrofit2+RXjava封裝之資料預處理(六)Android架構MVP模式RxJava封裝
- Android Retrofit 2.5.0使用基礎詳解Android
- Retrofit+okhttp+Rxjava封裝網路請求工具類HTTPRxJava封裝
- Android結合DataBinding封裝的BaseBindingAdapterAndroid封裝APT
- .net 中的 Dto 引數封裝物件 使用封裝物件
- Android:Retrofit 2.0 使用攻略(含例項講解)Android
- Android架構系列-封裝自己的okhttpAndroid架構封裝HTTP
- Android常用工具類的封裝Android封裝
- 【Android】EventReminder使用教程(日曆事件匯出封裝庫)AndroidREM事件封裝
- Vue Axios 的封裝使用VueiOS封裝
- Android 中判斷年齡是否在16歲以下(含16歲)及其方法的封裝使用Android封裝
- Android之Activity基類封裝Android封裝
- Android Retrofit原始碼解析Android原始碼
- 封裝redux中的createStore封裝Redux
- laravel Es的封裝與使用Laravel封裝
- vue中使用axios的封裝VueiOS封裝
- Android掃碼槍監聽封裝Android封裝
- [Android] Retrofit原始碼:流程解析Android原始碼
- 一次Android動畫工具類的封裝Android動畫封裝
- Retrofit基本使用
- Android使用Kotlin+Retrofit+Rxjava實現簡單的網路請求AndroidKotlinRxJava
- Android 封裝AsyncTask操作Sqlite資料庫Android封裝SQLite資料庫
- Android小知識-剖析Retrofit中網路請求的兩種方式Android
- vue中axios請求的封裝VueiOS封裝