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