1. 程式人生 > >Android兩大網路請求庫

Android兩大網路請求庫

  1. Retrofit2請求庫
  • 新增依賴:

compile 'com.squareup.retrofit2:retrofit:2.0.2'

compile 'com.squareup.retrofit2:converter-gson:2.0.2'

compile 'com.squareup.okhttp3:okhttp:3.5.0'

  • 定義介面,該介面用來定義接受的資料型別與請求的引數:

public interface GetService {

@POST("roomServlet")

Call<RoomInfo> getRoomInfo(@Query("action") String action,

@Query("userId") String userId,

@Query("userName") String userName,

@Query("userAvatar") String userAvatar,

@Query("liveCover") String liveCover,

@Query("liveTitle") String liveTitle);

@POST("roomServlet")

Call<List<RoomInfo>> getRoomInfoList(@Query("action") String action,

@Query("pageIndex") int pageIndex);

@POST("roomServlet")

Call<String> quitLiving(@Query("action") String action,

@Query("roomId") int roomId,

@Query("userId") String userId);

@POST("roomServlet")

Call<String> joinLiving(@Query("action") String action,

@Query("userId") String userId,

@Query("roomId") int roomId);

}

也可以寫成:

Call<RoomInfo> getRoomInfo(@body(RoomInfo roominfo));

POST可以用GET等其它操作替換,roomServlet是請求的url

  • 建立請求:

Retrofit retrofit=new Retrofit.Builder()

.baseUrl(baseUrl)

.addConverterFactory(GsonConverterFactory.create())

.build();

GetService request = retrofit.create(GetService.class);

//對傳送請求進行封裝

Call<String> call = request.quitLiving("quit",roomId,userId);

//傳送網路請求(非同步)

call.enqueue(new Callback<String>() {

//請求成功時回撥

@Override

public void onResponse(Call<String> call, Response<String> response) {

l.onSuccess(response.body());

}

//請求失敗時回撥

@Override

public void onFailure(Call<String> call, Throwable throwable) {

l.onFail();

}

});

2.okhttp請求庫

  • 新增依賴:

compile 'com.squareup.okhttp3:okhttp:3.5.0'

  • 定義資料解析類:

public class ResponseObject {

public static final String CODE_SUCCESS = "1";

public static final String CODE_FAIL = "0";

public String code;

public String errCode;

public String errMsg;

public List<RoomInfo> data;

}

該類為接受後臺傳過來的資料格式一致

  • 建立請求:

final Request request = new Request.Builder()

.url(url)

.build();

okClient.newCall(request).enqueue(new Callback() {

@Override

public void onFailure(Call call, IOException e) {

onFail(e);

}

@Override

public void onResponse(Call call, Response response) throws IOException {

//不是UI執行緒

if (response.isSuccessful()) {

LiveListResponseObj liveListresponseObject = gson.fromJson(response.body().string(), LiveListResponseObj.class);

} else {

onResponseFail(response.code());

}

}

});