您的位置:首页 > 其它

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'

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: