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())新聞熱點
疑難解答