Retrofit对象创建采用的是建造者模式,baseUrl 必须得指定,url有两种情况(schme://host/path/path/path/),只写到主机名(host),或者写path后跟/结束。其他的形式的是非法的。
1 Retrofit retrofit = new Retrofit.Builder() 2 .baseUrl(API_URL) 3 .addConverterFactory(GsonConverterFactory.create()) 4 .build();
retrofit是通过对方法的反射来执行网络请求,需要方法的注解和参数列表,不需要方法体,所以调用create()方法时要的是一个接口,在这个方法中创建了Github接口的代理,其中接口中的方法代码一个完整的请求,用方法注解来表示网络请求的方法和url,其中url中的path是可以即时变化的,变化的值放在方法的参数列表中,参数列表的注解来表示该参数对应url中的哪一部分。
public interface GitHub { @GET("/repos/{owner}/{repo}/contributors") Call<List<Contributor>> contributors(@Path("owner") String owner, @Path("repo") String repo); }
GitHub github = retrofit.create(GitHub.class);
Retrofit用给方法加的注解来定义网络请求的方式,包含以下注解:
@DELETE
@GET:对应GET请求方式,注解的值是要请求的路径
@POST:POST请求方式,用于提交数据到服务器
@PUT
@HEAD
@OPTIONS
@PATCH
@HTTP:自定义请求方式
@Headers
@Multipart
@FormUrlEncoded