1.首先,你需要创建一个Retrofit
对象,并且指定api的域名:
public static final String API_URL = "https://zhuanlan.zhihu.com";
Create a very simple REST adapter which points the API.
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(API_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
2.
其次,你要根据api新建一个Java接口,用Java注解来描述这个api
public interface ZhuanLanApi {
@GET("/api/columns/{user} ")//请求网址https://zhuanlan.zhihu.com/api/colimns/{动态参数 user}
Call<ZhuanLanAuthor> getAuthor(@Path("user") String user)
}
再用这个
retrofit
对象创建一个
ZhuanLanApi
对象:
ZhuanLanApi api = retrofit.create(ZhuanLanApi.class);
Call<ZhuanLanAuthor> call = api.getAuthor("qinchao");
这样就表示你要请求的api是https://zhuanlan.zhihu.com/api/columns/qinchao
最后你就可以用这个call
对象获得数据了,enqueue
方法是异步发送http请求的,如果你想用同步的方式发送可以使用execute()
方法,call
对象还提供cancel()
、isCancel()
等方法获取这个Http请求的状态
// 请求数据,并且处理response
call.enqueue(new Callback<ZhuanLanAuthor>() {
@Override
public void onResponse(Response<ZhuanLanAuthor> author) {
System.out.println("name: " + author.getName());
}
@Override
public void onFailure(Throwable t) {
}
});
Retrofit
只要
创建一个接口来描述Http请求
,然后可以让我们
可以像调用Java方法一样请求一个Api
,是不是觉得很神奇,很不可思议!!
实现断点续传需要在创建retrofit的时候创建一个 Okttp3.client 对象
mRetrofit = new Retrofit.Builder() .addConverterFactory(GsonConverterFactory.create()) .baseUrl(baseUrl) .client(getProgressClient()) .build();
public OkHttpClient getProgressClient() { Interceptor interceptor = new Interceptor() { @Override public Response intercept(Chain chain) throws IOException { Request request = chain.request().newBuilder().addHeader("Range", "bytes=" + startPoints + "-").build();//startpos 就是数据库记录的已经下载的大小 Response originalResponse = chain.proceed(request); return originalResponse.newBuilder().build(); } };
return new OkHttpClient.Builder()
.addNetworkInterceptor(interceptor)
.build();
}
retroift 使用部分文章出处:http://www.jianshu.com/p/c1a3a881a144