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

       近期,随着开发的需要,研究了一下网络请求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
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用Retrofit2进行POST异步请求的示例代码: 1.首先,在build.gradle文件中添加Retrofit2和Gson的依赖: ```gradle dependencies { // Retrofit2 implementation 'com.squareup.retrofit2:retrofit:2.9.0' 'com.squareup.retrofit2:converter-gson:2.9.0' // Gson implementation 'com.google.code.gson:gson:2.8.6' } ``` 2.创建一个接口,用于定义POST请求的URL和参数: ```java public interface PostRequest_Interface { @POST("translate?doctype=json&jsonversion=&type=&keyfrom=&model=&mid=&imei=&vendor=&screen=&ssid=&network=&abtest=") @FormUrlEncoded Call<Translation1> getCall(@Field("i") String targetSentence); } ``` 3.创建一个实体类,用于接收服务器返回的JSON数据: ```java public class Translation1 { private int errorCode; private String query; private List<String> translation; // 省略getter和setter方法 } ``` 4.在Activity中发起POST异步请求: ```java public class MainActivity extends AppCompatActivity { private TextView mTvResult; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTvResult = findViewById(R.id.tv_result); // 创建Retrofit对象 Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://fanyi.youdao.com/") .addConverterFactory(GsonConverterFactory.create()) .build(); // 创建网络请求接口实例 PostRequest_Interface request = retrofit.create(PostRequest_Interface.class); // 发起POST异步请求 Call<Translation1> call = request.getCall("hello"); call.enqueue(new Callback<Translation1>() { @Override public void onResponse(Call<Translation1> call, Response<Translation1> response) { Translation1 translation = response.body(); if (translation != null) { mTvResult.setText(translation.getTranslation().get(0)); } } @Override public void onFailure(Call<Translation1> call, Throwable t) { mTvResult.setText("请求失败:" + t.getMessage()); } }); } } ``` 在上述代码中,我们首先创建了一个Retrofit对象,并指定了请求的基础URL和Gson转换器。然后,我们创建了一个网络请求接口实例,并调用其中的getCall()方法发起POST异步请求。最后,我们在回调方法中处理服务器返回的数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值