retrofit网络请求框架
网络访问框架经过了从使用最原始的AsyncTask构建简单的网络访问框架(甚至不能称为框架),后来使用开源的android-async-http库,再到使用xUtil,后来再到使用google发布的volley库,一直不懈的寻找更好的解决方案,今天来分享一个retrofit网络框架的网络请求
,这里只实现一个简单的网络请求到数据的过程
使用网络请求第一步不用我在详细的解释说明了
添加如下代码
<uses-permission android:name="android.permission.INTERNET" />
当然使用retrofit网络框架也需要导入依赖,加上此句代码就可以了,会自动的去下载所需要的资源,很快,
compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta4'
- retrofit网络框架的使用
- 使用retrofit网络框架分为如下几步
- 第一步:实现一个自定义的接口类,这里定义请求方式以及路径或者并接的后缀
- 第二步初始化一个retrofit对象
- 第三步初始化一个接口对象
- 第四步网络请求
分为以上四步,接下来就具体的按步骤来实现
第一步:
自定义个接口类MyHttpServerInterface.class
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.http.GET;
/**
* Created by user on 2016/7/30.
* 网络请求接口通过retrofit网络框架实现网路请求数据
* 此处的33943825是一个主播专辑的id,通过并接拿到数据
* @GET("33943825")此处声明请求方式为get请求
* ("33943825")此处也可以是你的base_url
*/
public interface MyHttpServerInterface {
@GET("33943825")
Call<ResponseBody> getLatestJsonString();
}
第二步初始化retrofit对象
public static String ANCHOR_ALBUM_BASE_URL=
"http://mobile.ximalaya.com/mobile/v1/artist/tracks?device=android&pageId=1&toUid=";
Retrofit retrofit = new Retrofit.Builder().baseUrl(ANCHOR_ALBUM_BASE_URL) .addConverterFactory(GsonConverterFactory.create())
.client(new OkHttpClient()).build();
第三步:初始化接口,但是要记住,放在初始化retrofit对象后面
MyHttpServerInterface httpStores =retrofit.create(MyHttpServerInterface.class);
第四步网络请求
Call<ResponseBody> call = httpStores.getLatestJsonString();
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, retrofit2.Response<ResponseBody> response) {
if (response.isSuccess()) {
try {
String result = response.body().string();
Log.d("sxh", "onResponse: "+result);
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
}
});
以上就是所有的过程,除了自定义接口类这一步,其它三步均写在一个方法内,直接调用这个方法就可以,今天就先实现一个基本的网络请求