Retrofit2.0的get请求和post请求(入门级)

来源:互联网 发布:知画与永琪圆房的文 编辑:程序博客网 时间:2024/05/16 17:41

       近期,随着开发的需要,研究了一下网络请求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的使用首先要导依赖: 在Actvity的oncreate方法中初步配置,使用构建者模式,其中baseUrl是基本网址,addConverterFactory是解析json字符串并返回对应Bean类client是okhttp的延伸配置,简单使用不用调用。
  





retrofit使用时,请求方式主要是以接口的形式实现,如下面代码块,get请求需要使用注解@GET,参数是地址,此地址是baseUrl的追加,用于填写完整路径
下面是接收对象,所有的retrofit接收对象都是Call集合,泛型可以是解析后对应的Bean类或是集合,还可以用自带的ResponseBody类接收,最后自行解析,我认为,
对应的Bean比较方便,Post请求和get请求区别不大,需要使用注解@FormUrlEncoded对所传地址进行编码解析,在自定义方法pgetUser中加注解@Field uid为请求参数
而后面的参数不但可以是String,还可以是Map集合的键值对形式,为了方便多个参数请求
这就是get,post请求的接口类内容;
重点是@GET,@Query,@FormUrlEncoded,@POST,@Field的使用


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 = nickname;        }        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'


 




 
原创粉丝点击