Android兩大網路請求庫
- 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());
}
}
});