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);
}
}