Retrofit2.0的get请求和post请求(入门级)
2017-10-31 10:27
281 查看
近期,随着开发的需要,研究了一下网络请求Retrofit的功能,其实就是对okhttp的封装,使用起来很方便,主要是以注解的形式进行请求,下面是我看过一些博客大佬们写过的常用注解,方法注解,包含@GET、@POST、@PUT、@DELETE、@PATH、@HEAD、@OPTIONS、@HTTP。标记注解,包含@FormUrlEncoded、@Multipart、@Streaming。参数注解,包含@Query,@QueryMap、@Body、@Field,@FieldMap、@Part,@PartMap。其他注解,@Path、@Header,@Headers、@Url这些注解都是以后慢慢深化时所需要的,不适合初步了解的开发者去全部吸收,接下来是入门级别的使用retrofit的简单get,post的使用首先要导依赖:
compile 'com.squareup.retrofit2:retrofit:2.0.2' compile 'com.squareup.retrofit2:converter-gson:2.0.2' compile 'com.squareup.retrofit2:adapter-rxjava:2.0.2' compile 'com.squareup.okhttp3:logging-interceptor:3.2.0'在Actvity的oncreate方法中初步配置,使用构建者模式,其中baseUrl是基本网址,addConverterFactory是解析json字符串并返回对应Bean类client是okhttp的延伸配置,简单使用不用调用。
Retrofit retrofit=new Retrofit.Builder() .baseUrl("https://www.zhaoapi.cn/") .client(setCard()) .addConverterFactory(GsonConverterFactory.create()) .build();retrofit使用时,请求方式主要是以接口的形式实现,如下面代码块,get请求需要使用注解@GET,参数是地址,此地址是baseUrl的追加,用于填写完整路径下面是接收对象,所有的retrofit接收对象都是Call集合,泛型可以是解析后对应的Bean类或是集合,还可以用自带的ResponseBody类接收,最后自行解析,我认为,对应的Bean比较方便,Post请求和get请求区别不大,需要使用注解@FormUrlEncoded对所传地址进行编码解析,在自定义方法pgetUser中加注解@Field uid为请求参数而后面的参数不但可以是String,还可以是Map集合的键值对形式,为了方便多个参数请求这就是get,post请求的接口类内容;重点是@GET,@Query,@FormUrlEncoded,@POST,@Field的使用[code]public interface UIData {@GET("user/getUserInfo")Call<User> getUser(@Query("uid") String uid);@FormUrlEncoded@POST("user/getUserInfo")Call<User> pgetUser(@Field("uid") String uid);}
接口类创建完毕,就开始调用使用//调用retrofit的create方法,获得接口类
final UIData uiData = retrofit.create(UIData.class); //调用get请求的getUser方法,并返回gson解析后的的bean类 retrofit2.Call<User> user = uiData.getUser("88"); //使用call进行请求 user.enqueue(new retrofit2.Callback<User>() { @Override public void onResponse(retrofit2.Call<User> call, retrofit2.Response<User> response) { String msg = response.body().getMsg(); System.out.println("数据=========="+msg); } @Override public void onFailure(retrofit2.Call<User> call, Throwable t) { System.out.println("数据=========="+t.toString()); } }); post请求: //同样的办法获得接口类 final UIData uiData = retrofit.create(UIData.class); //post方法 Call<User> userCall = uiData.pgetUser("88"); userCall.enqueue(new retrofit2.Callback<User>() { @Override public void onResponse(retrofit2.Call<User> call, retrofit2.Response<User> response) { String msg = response.body().getMsg(); System.out.println("数据=========="+msg); } @Override public void onFailure(retrofit2.Call<User> call, Throwable t) { System.out.println("数据=========="+t.toString()); } });User的Bean类:
public class User { /** * msg : 获取用户信息成功 * code : 0 * data : {"age":null,"appkey":null,"appsecret":null,"createtime":"2017-10-03T00:00:00","email":null,"gender":0,"icon":"http://120.27.23.105/images/88.jpg","mobile":"13716792264","money":0,"nickname":"张贺岗","password":"111111","token":null,"uid":88,"username":"13716792264"} */ private String msg; private String code; private DataBean data; public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public DataBean getData() { return data; } public void setData(DataBean data) { this.data = data; } public static class DataBean { /** * age : null * appkey : null * appsecret : null * createtime : 2017-10-03T00:00:00 * email : null * gender : 0 * icon : http://120.27.23.105/images/88.jpg * mobile : 13716792264 * money : 0 * nickname : 张贺岗 * password : 111111 * token : null * uid : 88 * username : 13716792264 */ private Object age; private Object appkey; private Object appsecret; private String createtime; private Object email; private int gender; private String icon; private String mobile; private int money; private String nickname; private String password; private Object token; private int uid; private String username; public Object getAge() { return age; } public void setAge(Object age) { this.age = age; } public Object getAppkey() { return appkey; } public void setAppkey(Object appkey) { this.appkey = appkey; } public Object getAppsecret() { return appsecret; } public void setAppsecret(Object appsecret) { this.appsecret = appsecret; } public String getCreatetime() { return createtime; } public void setCreatetime(String createtime) { this.createtime = createtime; } public Object getEmail() { return email; } public void setEmail(Object email) { this.email = email; } public int getGender() { return gender; } public void setGender(int gender) { this.gender = gender; } public String getIcon() { return icon; } public void setIcon(String icon) { this.icon = icon; } public String getMobile() { return mobile; } public void setMobile(String mobile) { this.mobile = mobile; } public int getMoney() { return money; } public void setMoney(int money) { this.money = money; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nicknam 4000 e; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Object getToken() { return token; } public void setToken(Object token) { this.token = token; } public int getUid() { return uid; } public void setUid(int uid) { this.uid = uid; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } } }
附上bean类,作为参考,最后完成compile 'com.squareup.retrofit2:retrofit:2.0.2'compile 'com.squareup.retrofit2:converter-gson:2.0.2'compile 'com.squareup.retrofit2:adapter-rxjava:2.0.2'compile 'com.squareup.okhttp3:logging-interceptor:3.2.0'
compile 'com.squareup.retrofit2:retrofit:2.0.2'compile 'com.squareup.retrofit2:converter-gson:2.0.2'compile 'com.squareup.retrofit2:adapter-rxjava:2.0.2'compile 'com.squareup.okhttp3:logging-interceptor:3.2.0'
相关文章推荐
- [Android] Retrofit2.0 GET和POST方式请求
- Retrofit2.0的get post请求简单数据
- Retrofit的Get与Post请求
- 利用Retrofit执行Post、Get请求,通俗易懂
- Retrofit网络请求封装公共参数GET和POST请求
- 使用Retrofit结合RxJava实现Get与Post网络请求
- 初学者---Android (简单总结)Retrofit请求方式之get,post
- Retrofit 2.0 GET 请求参数出现错误
- Retrofit2的get请求和post请求
- retrofit的 get post 请求 + log日志
- Retrofit简单封装使用--Post请求封装请求体、Get请求通过参数、map方式构建url
- 两行代码搞定发送 Retrofit GET/POST 请求
- 详解Retrofit 动态参数(非固定参数、非必须参数)(Get、Post请求)
- 快捷使用Retrofit网络请求框架(get请求,post请求,上传文件)
- Retrofit 2.0关于get和post的网络访问的简单使用
- Retrofit2.0学习之GET请求
- [置顶] 策略模式(注解版)实现 retrofit 的get和post请求的公共参数(二)
- Android Retrofit 2.0框架 GET和POST的实现方式(配合RxJava)
- Retrofit 动态参数(Get、Post请求)
- Android Retrofit 2.0框架 GET和POST的实现方式(配合RxJava)