利用Retrofit執行Post、Get請求,通俗易懂

1 Get請求

1.1 創建實體
1.2 創建代理接口

public interface MyService {
    @GET("url")
    Call<Contributor> getCall();
}
注意:
a. Get是get,post是post
b. 地址填全部,不能動態寫入參數
c. getCall參數爲空

1.3 創建Retrofit對象

Retrofit retrofit = new Retrofit.Builder()
        .baseUrl(urlbase)
        .addConverterFactory(GsonConverterFactory.create())
        .build();
注意:
a. baseUrl的地址填到端口即可,因爲代理接口那邊填了完整地址,這裏會無效,但也要寫到端口,否則報錯

1.4 通過retrofit獲取動態服務代理對象

MyService myService = retrofit.create(MyService.class);


1.5 通過實體調用請求方法,空參數,獲取Call對象

//【5.創建call對象請求】執行github.contributors()完這裏的時候,因爲github是動態代理對象,會執行retrofit.create的創建方法,這個方法裏面就創建了http請求對象也就是MethodHandler,裏面包括了okhttpclient和request(就等於volley的request)Converter:數據轉換器,這樣創建了http請求,就可以交給call.enqueue來發送這個請求了
   
Call<MyEntity> call = myService.getCall();


1.6 Call執行異步請求

call.enqueue(new retrofit.Callback<MyEntity>() {
    @Override
    public void onResponse(retrofit.Response<MyEntity> response, Retrofit retrofit) {
        Log.i("tan6458", "response大小:" + response.body().getHomeCraImgList().size());
    }


    @Override
    public void onFailure(Throwable throwable) {


    }
});


2 Post請求

2.1 創建實體
2.2 創建代理接口

public interface MyService2 {
    @POST("url")
    Call<MyEntity2> getCall(@Query("tel") String phone);
}
注意:
d. Get是get,post是post
e. 地址填到問號前,
f. getCall參數用@Query+(”接口變量字段“)+String +形參

2.3 創建Retrofit對象

Retrofit retrofit = new Retrofit.Builder()
        .baseUrl(urlbase)
        .addConverterFactory(GsonConverterFactory.create())
        .build();
注意:
b. baseUrl的地址填到端口即可,因爲代理接口那邊填了完整地址,這裏會無效,但也要寫到端口,否則報錯

2.4 通過retrofit獲取動態服務代理對象

MyService2 myService2 = retrofit.create(MyService2.class);


2.5 通過實體調用請求方法,填入對應字段參數,獲取Call對象

   
Call<MyEntity2> call = github2.getCall("18813145555");


2.6 Call執行異步請求

call.enqueue(new retrofit.Callback<MyEntity2>() {
    @Override
    public void onResponse(retrofit.Response<MyEntity2> response, Retrofit retrofit) {
        Log.i("tan6458", "response大小:" + response.body().getHomeCraImgList().size());
    }


    @Override
    public void onFailure(Throwable throwable) {


    }

});



源碼


點擊打開鏈接
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章