Retrofit--網路請求框架
阿新 • • 發佈:2022-05-25
一、什麼是Retrofit
Retrofit是Adnroid常用的一種網路請求框架,他是一個基於OkHttp網路請求的封裝了網路請求介面的框架
二、Retrofit的基本使用
1.需要新增Retrofit和OkHttp的依賴 2.新增對應的網路請求許可權 3.建立接受伺服器返回資料的類(類檔案) 4.建立用於描述的網路介面 5.建立Retrofit物件 6.建立網路請求介面的例項 7.傳送網路請求 8.接收並處理返回資料
三、網路請求的一些方法以及引數設定
3.1 介面常見形式:
@Get
public interface XXXX { @GET("XXXX") Call<ResponseBody> getCall(); }//XXX是url後面是根據前後端通訊url具體定義的引數形式
@POST
public interface PostRequestGridPageTaskList { @Headers({"Content-Type: application/json","Accept: application/json"}) @POST("XXXXX{id}") Call<ResponseBody> getCall(@Path("id") int id); } // {id} 表示是一個變數 // headers裡的是一個具體的頭形式
3.2 上傳格式:
@FromUrlEncoded
每個鍵值對需要用@Filed來註解鍵名;
@Multipart
適用於有檔案上傳的場景,每個鍵值對需要用@Part來註解鍵名;
@Path
適用於url地址引數需要變化的場景
@POST("/form") @FormUrlEncoded Call<ResponseBody> XXX(@Field("name") String name, @Field("age") int age); // @POST("/form") @Multipart Call<ResponseBody> XXX(@Part("name") RequestBody name, @Part("age") RequestBody age, @Part MultipartBody.Part file);// @GET("users/{user}") Call<ResponseBody> getBlog(@Path("user") String user ); // 訪問的API是:https://XXXX/user/{user}// 在發起請求時, {user} 會被替換為方法的第一個引數 user(被@Path註解作用) }
四、Retrofit建立例項
//建立retrofit物件 Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://fanyi.youdao.com/") // 設定網路請求的Url地址 .addConverterFactory(GsonConverterFactory.create()) // 設定資料解析器 一般用GJson .build(); //建立介面XXX的例項 XXX request = retrofit.create(XXX.class); //對傳送請求進行封裝 XXX是介面中定義好的responseBody Call<ResponseBody> call = request.XXX(); //傳送網路請求(非同步) call.enqueue(new Callback<Translation>() { //請求成功時回撥 @Override public void onResponse(Call<Translation> call, Response<Translation> response) { //處理返回的資料結果 response.body().show(); } //請求失敗時回撥 @Override public void onFailure(Call<Translation> call, Throwable throwable) { System.out.println("連線失敗"); } }); }