retrofit框架使用

来源:互联网 发布:mac战网国服改台服 编辑:程序博客网 时间:2024/06/02 04:55

1.先导包:retrofit2及converter-gson

dependencies {    compile fileTree(dir: 'libs', include: ['*.jar'])    testCompile 'junit:junit:4.12'    compile 'com.android.support:appcompat-v7:23.4.0'    compile 'com.squareup.retrofit2:retrofit:2.0.2'    compile 'com.squareup.retrofit2:converter-gson:2.0.1'    compile 'com.squareup.retrofit2:converter-scalars:2.0.2'}

2.创建interface接口数据

public interface YtmfdwApi {    @GET("http://www.baidu.com")    Call<ResponseBody> getBaidu();}

3.在Actiivty中,调用retrofit联网请求

Retrofit retrofit = new Retrofit.Builder()    .baseUrl(API.URL_BASE)    .client(API.getOkHttpClient(this))    .addConverterFactory(ScalarsConverterFactory.create())    .addConverterFactory(SimpleXmlConverterFactory.create())    .build();QueryService qs = retrofit.create(QueryService.class);Call<String> queryCall = qs.query(page);

4.异步请求(Android不能在主线程中联网请求):

//异步请求baidu.enqueue(new Callback<ResponseBody>() {    @Override    public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {        try {            String value = response.body().string();            LogUtils.d(value);        } catch (IOException e) {            e.printStackTrace();        }    }    @Override    public void onFailure(Call<ResponseBody> call, Throwable t) {    }});

5.配合Gson解析json对象

/** * 检查更新 */private void checkUpdate() {    //Gson对象注册UpdateBean实体    Gson gson = new GsonBuilder()        .registerTypeAdapter(UpdateBean.class, new MyDeserializer<UpdateBean>())        .create();    //实例Retrofit    Retrofit retrofit = new Retrofit.Builder().baseUrl(Api.BASE_URL)        .addConverterFactory(GsonConverterFactory.create(gson))        .build();    //获取内容    UpdateApi content = retrofit.create(UpdateApi.class);    final Call<UpdateBean> updateContent = content.getContent();    //异步请求    updateContent.enqueue(new Callback<UpdateBean>() {        @Override        public void onResponse(Call<UpdateBean> call, Response<UpdateBean> response) {        try {            UpdateBean bean = response.body();            LogUtils.d(bean.toString());        } catch (Exception e) {            e.printStackTrace();        }    }        @Override        public void onFailure(Call<UpdateBean> call, Throwable t) {        }    });}

6.MyDeserializer类

public class MyDeserializer<T> implements JsonDeserializer<T> {    @Override    public T deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {        //JsonElement je= json.getAsJsonObject().getAsJsonObject("jsonString");        return new Gson().fromJson(json, typeOfT);    }}
原创粉丝点击