本篇講解內(nèi)容:Retrofit2的基本使用
官方地址:http://square.github.io/retrofit/
github地址:https://github.com/square/retrofit
1.引用到項(xiàng)目 compile 'com.squareup.retrofit2:retrofit:2.3.0'
2.對比上篇中post請求來寫retrofit請求(post請求的地址和參數(shù)和上篇一樣饵溅,本篇開始只講解post請求)
- 首先看官方的介紹:Retrofit turns your HTTP API into a Java interface.意思是Retrofit 將http請求轉(zhuǎn)化為java 接口,對應(yīng)的代碼操作就是塞淹,創(chuàng)建http接口類,我命名為RetrofitService笼沥,代碼如下:
public interface RetrofitService {
@POST("app/gift/gift_list/")
Call<ResponseBody> getGameList(@Body RequestBody body);
}
- 然后看看RetrofitActivity中調(diào)用的代碼,與okhttp不一樣的地方呈野,首先就是將Url進(jìn)行拆分,第二就是將請求統(tǒng)一寫到一個(gè)接口類管理酬核,最后調(diào)用enqueue蜡塌,基本上也很簡單碉纳。
public class RetrofitActivity extends AppCompatActivity {
public static final String BASE_URL = "http://zhushou.72g.com/";//BASE_URL請以/結(jié)尾
public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
private String TAG = "RetrofitActivity";
private RetrofitService service;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//創(chuàng)建retrofit,將上篇中的POST_URL拆開馏艾,一部分在BASE_URL劳曹,一部分在RetrofitService的post參數(shù)中
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.build();
//使用Retrofit 創(chuàng)建RetrofitService的實(shí)現(xiàn)
service = retrofit.create(RetrofitService.class);
//POST請求和上篇一樣奴愉,創(chuàng)建請求體
try {
JSONObject jsonObject = new JSONObject();
jsonObject.put("page", "1");
jsonObject.put("code", "news");
jsonObject.put("pageSize", "20");
jsonObject.put("parentid", "0");
jsonObject.put("type", "1");
post(jsonObject.toString());
} catch (JSONException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
void post(String jsonObject) throws IOException {
RequestBody body = RequestBody.create(JSON, jsonObject.toString());
Call<ResponseBody> responseBodyCall = service.getGameList(body);
responseBodyCall.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
try {
Log.d(TAG, "get response=" + response.body().string());
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
}
});
}
}
好了到此為止你已經(jīng)學(xué)會(huì)了retrofit了,是不是很簡單铁孵,下一篇我們將對retrofit進(jìn)行簡單的封裝锭硼,為什么現(xiàn)在封裝,是因?yàn)橛行┬』锇榻酉聛砜赡懿恍枰褂胷xjava蜕劝,畢竟學(xué)習(xí)rxjava不像retrofit這么簡單檀头。