Retrofit 入门–Part 1

因为一些原因可能会用到Retrofit,所以学了一下,现在把自己的一些学习经验分享给大家

Retrofit是一套RESTful架构的Android(Java)客户端实现,基于注解,提供JSON to POJO(Plain Ordinary Java Object,简单Java对象),POJO to JSON,网络请求(POST,GET,PUT,DELETE等)封装。
Retrofit 官网

这篇文章里用到了这样一个结构来存数据

public class Task {    private long id;    private String text;    public Task() {}    public Task(long id, String text) {        this.id = id;        this.text = text;    }    public String toString(){        return text+id;    }}

在每个例子中,都会用到这样一个类

public class ServiceGenerator {    public static final String API_BASE_URL="http://192.168.191.1";    private static OkHttpClient httpClient=new OkHttpClient();    private static Retrofit.Builder builder=            new Retrofit.Builder()            .baseUrl(API_BASE_URL)            .addConverterFactory(GsonConverterFactory.create())                    .addCallAdapterFactory(RxJavaCallAdapterFactory.create());    public static <S>S createService(Class<S> serviceClass){        Retrofit retrofit=builder.client(httpClient).build();        return retrofit.create(serviceClass);    }}

Get请求

public interface Get {    @GET("/retrofit/test2.php")    Call<List<Res>>s(            @Query("par1") String par1,            @Query("par2") String par2    );}

有了以上几个类,我们就可以发出Get请求了

Task t=new Task(1,"my task");GET o=Get.createService(Get.class);Call<List<Task>> call=o.createTask("1","2");  List<Task> l= null; try {    l=call.execute().body();    for(Task t:l){        Log.d("AAA",t.toString());    }    } catch (IOException e) {     e.printStackTrace();     }

由于在这儿使用的是默认的Convert,在这里有这几点需要注意

  • 服务器返回的应该是这样的
[{"id":"111","text":"task text"},{"id":"111","text":"task text"}], 如果放回的最外层是jsonobject将会报错
  • 返回中的id 和 text 应当与Task 类中的id text相对,否则将会出错

Post请求

在这儿,我们是把post的参数放在request body里发送
在Get例子中,我们使用List来获取一组数据,你可能只想要一组数据,在这儿我们将会实现它

public interface Post {    @POST("/retrofit/test2.php")    Call<Task> s(        @Body Task task    );}

之后执行它的过程与Get并无区别,与上面有区别的是,服务器返回的应当是json object而不是 array

{"id":"111","text":"task text"}

今天就写这么多

更多相关文章

  1. 一句话锁定MySQL数据占用元凶
  2. Android基于Http协议实现文件上传功能的方法
  3. 【Android】原生Progress提示
  4. Android(安卓)Jetpack组件之DataBinding详解
  5. Android中 一些维持状态的经验
  6. Android系统剪贴板(ClipboardManager)的简单使用
  7. android 解决java.nio.BufferOverflowException 异常
  8. Android(安卓)string-array数据源简单使用
  9. django返回json的几种方法以及android调用

随机推荐

  1. Android(安卓)UI设计-google官方推荐
  2. Android/Java 实现PCM与G.711编码互转
  3. iOS11苹果8能做到的,Android(安卓)ivviK5
  4. Android图片裁剪实现(EnjoyCrop)
  5. 手机杂谈
  6. 经过市场考验的最新商用版声波通信源码和
  7. Android(安卓)贝塞尔曲线简单应用(一)
  8. android 逆向工程
  9. Android推送通知的实现--通过 WebSphere
  10. 如何在Android中使用汇编语言