Rxjava2+Retrofit2結(jié)合mvp的簡(jiǎn)單教程Retrofit篇(一):Retrofit2的基本使用


本篇講解內(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.對(duì)比上篇中post請(qǐng)求來(lái)寫retrofit請(qǐng)求(post請(qǐng)求的地址和參數(shù)和上篇一樣,本篇開(kāi)始只講解post請(qǐng)求)

  • 首先看官方的介紹:Retrofit turns your HTTP API into a Java interface.意思是Retrofit 將http請(qǐng)求轉(zhuǎn)化為java 接口,對(duì)應(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)行拆分,第二就是將請(qǐng)求統(tǒng)一寫到一個(gè)接口類管理,最后調(diào)用enqueue,基本上也很簡(jiǎn)單。
public class RetrofitActivity extends AppCompatActivity {
    public static final String BASE_URL = "http://zhushou.72g.com/";//BASE_URL請(qǐng)以/結(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拆開(kāi),一部分在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請(qǐng)求和上篇一樣,創(chuàng)建請(qǐ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了,是不是很簡(jiǎn)單,下一篇我們將對(duì)retrofit進(jìn)行簡(jiǎn)單的封裝,為什么現(xiàn)在封裝,是因?yàn)橛行┬』锇榻酉聛?lái)可能不需要使用rxjava,畢竟學(xué)習(xí)rxjava不像retrofit這么簡(jiǎn)單。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容