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

相关文章
相关标签/搜索