RESTfun—-REST风格的网络接口
REST全称是Resource RePResentational State Transfer:通俗来讲就是:资源在网络中以某种表现形式进行状态转移,描述的是在网络中client和server的一种交互形式;REST本身不实用,实用的是如何设计 RESTful API(REST风格的网络接口);比volley更快支持NIO默认使用OKhttp默认使用Gson解析@Query查询参数集合
如果Query参数比较多,那么可以通过@QueryMap方式将所有的参数集成在一个Map统一传递,还以上文中的get请求方法为例
public interface BlueService { @GET("book/search") Call<BookSearchResponse> getSearchBooks(@QueryMap Map<String, String> options);}调用的时候将所有的参数集合在统一的map中即可
Map<String, String> options = new HashMap<>();map.put("q", "小王子");map.put("tag", null);map.put("start", "0");map.put("count", "3");Call<BookSearchResponse> call = mBlueService.getSearchBooks(options);@FormUrlEncoded
@Field@FieldMap@Multipart@PartPost@BodyPost
接口介绍:http://blog.csdn.net/duanyy1990/article/details/52139294
注意:导入的retrofit2包的版本必须要一致,否则就会报错。
Retrofit提供的请求方式注解有@GET和@POST,参数注解有@PATH和@Query等。前两个顾名思义就是定义你的请求方式Get、Post,后面的@PATH指的是通过参数填充完整的路径,一般用法: @GET(“{name}”) CallgetUser(@Path(“name”) String name); 这里的参数username会被填充至{name}中,形成完整的Url请求地址,{name}相当于一个占位符; @Query就是我们的请求的键值对的设置,我们构建Call对象的时候会传入此参数,
public interface RequestServes { @GET("show") Call<Bean> getMenuById(@Query("id") String id);}这里@Query(“id”)就是键,后面的id就是具体的值了,值得注意的是Get和Post请求,都是这样填充参数的;
- 这里的baseUrl加上之前@GET(“show”)定义的参数形成完整的请求地址; - addConverterFactory(ScalarsConverterFactory.create())的意思是构建了一个返回支持,如果你的Call对象的泛型接收另外的格式需要添加另外的支持:
//增加返回值为Gson的支持(以实体类返回) .addConverterFactory(GsonConverterFactory.create()) //增加返回值为Oservable<T>的支持 .addCallAdapterFactory(RxJavaCallAdapterFactory.create())新闻热点
疑难解答