#Retrofit 入门--Part 1
16lz
2021-01-26
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"}
今天就写这么多
更多相关文章
- 一句话锁定MySQL数据占用元凶
- Android基于Http协议实现文件上传功能的方法
- 【Android】原生Progress提示
- Android(安卓)Jetpack组件之DataBinding详解
- Android中 一些维持状态的经验
- Android系统剪贴板(ClipboardManager)的简单使用
- android 解决java.nio.BufferOverflowException 异常
- Android(安卓)string-array数据源简单使用
- django返回json的几种方法以及android调用