retrofit使用隨記

 

1.請求接口java

public interface RetrofitApi {
    /*註冊*/
    /*登陸*/
    @FormUrlEncoded    //post請求帶這個
    @POST("url")
    Call<User> login(@Field("json") JSONObject jsonObject);
     //由於我是使用的jsonobject因此使用@Filed,其餘的參照網上的例子,google
     //還有填寫字段的方式,這是封裝json
    /*Web*/
    @GET("url")
    Call<ResponseBody> getWebData();
    //String返回類型用ResponseBody

    /*註解url*/
    @GET
    Call<ResponseBody> getInfo(@Url String url);
   @Headers("Authorization:APPCODE "+AppUrl.ALI_API_APPCODE)
    @GET(AppUrl.ZIPCODE_PATH)
    Observable<ZipCodeBean> getZipCode(@Query("address") String address, @Query("areaid") String areaid);

    @Headers("Authorization:APPCODE "+AppUrl.ALI_API_APPCODE)
    @GET(AppUrl.ZIPCODE_GET+"?zipcode={zipcode}")
    Observable<ZipCodeBean> getZipCodePath(@Path("zipcode") String zipcode);
//測試
    @Headers("Authorization:APPCODE "+AppUrl.ALI_API_APPCODE)
    @GET()
    Observable get(@Url String url,@QueryMap Map<String,String> map);
 
 

 


}

2.使用:每一個call只能執行一次,能夠每次都從新獲取,也能夠經過克隆call.clone()獲取一個新的執行;json

String(get) 返回值數組

Call<ResponseBody> call = ...;//封裝之類網上搜索
if (type == 1){
            call = ApiFactory.getLiangCaiApi().getWebData();//獲取相應的call
            call.enqueue(new Callback<ResponseBody>() {
                @Override
                public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
                    ResponseBody bodys = response.body();//若是是下載東西(這裏是圖片)response.body().bytes
                    bodys.string;//獲取數據,,,response.body().bytes()獲取的是byte數組,(好比下載的圖片)
                }

                @Override
                public void onFailure(Call<ResponseBody> call, Throwable t) {
                    showToast("失敗");
                }
            });
        }else {
            call = ApiFactory.getLiangCaiApi().getWebData(getWebUrl());
            call.enqueue(new Callback<ResponseBody>() {
                @Override
                public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
                    
                }

                @Override
                public void onFailure(Call<ResponseBody> call, Throwable t) {
                    showToast("失敗");
                }
            });
        }

postide

Call<LoginBean> call;
call = call = ApiFactory.getRetrofitApi().login(getJson());
        call.enqueue(new CallBack<LoginBean>() {
            @Override
            public void onResponse(LoginBean result) {
                //result  實體類對象
            }

            @Override
            public void onFailure(String error) {

            }
        });
/**
     * post請求
     * */
    JSONObject jObject;
    private JSONObject getJson() {
        jObject = new JSONObject();
        try {
            jObject.put("name", "111");
            jObject.put("password", "123456");
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return jObject;
    }

3.自定義CallBackpost

自定義一個本身的MyCallBack繼承CallBack測試

能夠經過多態的方式(實體類的基類)在自定義的CallBack裏預先處理一些內容google

單純的retrofit,沒有使用rxjavaurl

相關文章
相關標籤/搜索