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'
阅读全文
0 0
- Retrofit2.0的get请求和post请求(入门级)
- Retrofit2的get请求和post请求
- Retrofit2的get请求和post请求
- 使用retrofit2.0实现网络请求post和get请求
- [Android] Retrofit2.0 GET和POST方式请求
- Retrofit2.0的get post请求简单数据
- 关于Retrofit2.0Get和Post请求的简单使用(小白适用)
- Android Retrofit2.0-post&get请求&文件上传&结合Rxjava
- Get请求和Post请求的区别
- POST请求和GET请求的区别:
- Get请求和Post请求的区别
- GET请求和POST请求的区别
- get请求和post请求的区别
- get 请求和post请求的区别
- get请求和post请求的区别
- HttpUrlConnection的GET请求和POST请求
- Get请求和Post请求的区别
- HTTP的GET请求和POST请求
- ArrayList的坑
- 每次New一个BouncyCastleProvider导致的内存泄漏
- linux查看主机名以及更改主机名
- 《程序员面试题精选》05.输出一个字符串的所有子串
- 写在前面
- Retrofit2.0的get请求和post请求(入门级)
- 去除URL中带有的jsessionid
- leetcode: 8. String to Integer (atoi)
- Android自定义属性
- mac 系统中用 ngrok 内网穿透实现微信测试
- 从银行转账失败到分布式事务:总结与思考
- hdu 5929 Basic Data Structure(找规律+deque模拟)
- Css
- input标签去掉边框和设置只读格式